Commit faf3676f by 徐高华

Merge branch 'developer' into 'feature-haoban-role'

# Conflicts:
#   haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/WelcomeServiceImpl.java
parents 2179eadb d73ff068
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
public class QwPendingIdDTO implements Serializable {
private static final long serialVersionUID = -7791318666042954957L;
private String externalUserId;
private String pendingId;
public String getExternalUserId() {
return externalUserId;
}
public String getPendingId() {
return pendingId;
}
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
public void setPendingId(String pendingId) {
this.pendingId = pendingId;
}
}
......@@ -100,6 +100,8 @@ public class StaffDTO implements Serializable {
private String defaultGicEid;
private Integer addNum;
private Integer activeStatus;
private String enterpriseId;
private String storeId;
public String getDefaultGicEid() {
return defaultGicEid;
......@@ -382,4 +384,20 @@ public class StaffDTO implements Serializable {
public void setActiveStatus(Integer activeStatus) {
this.activeStatus = activeStatus;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
}
package com.gic.haoban.manage.api.service;
public interface BindApiService {
void clerkManagerTranfer(String departmentId,String fromClerkCode,String toStaffDepartmentRelatedId);
void clerkUnbind(String departmentId,String fromClerkCode,String toStaffId,String manager);
void clerkSingleUnbind(String fromClerkCode,String departmentId);
void staffBind(String departmentId,String fromClerkCode,String fromStaffDepartmentRelatedId);
}
......@@ -34,4 +34,17 @@ public interface HaobanTimerApiService {
*/
public ServiceResponse<Void> repairExternalUserId(String wxEnterpriseId) ;
/**
*
* @Title: repairStaffDepart
* @Description: 修复成员部门
* @author xugh
* @param wxEnterpriseId
* @return
* @throws
*/
public ServiceResponse<Void> repairStaffDepart(String params) ;
}
......@@ -4,7 +4,6 @@ import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.MaidianLogDTO;
import java.util.List;
public interface MaidianLogApiService {
......
......@@ -59,8 +59,6 @@ public interface MemberUnionidRelatedApiService {
*/
List<MemberStoreDTO> listByExTernalUseridAndWxUserId(String externalUserid, String staffId, String storeId);
void cleanByCid(String cid);
/**
* 群发助手发送企业微信消息
*
......@@ -160,14 +158,6 @@ public interface MemberUnionidRelatedApiService {
String addExternal(ExternalUserDTO dto);
/**
* 添加企微好友关联关系表-需触达方式
*
* @param dto
* @return
*/
String addFriendExternal(ExternalUserDTO dto);
/**
* 获取客户详情-第三方
*
* @param wxEnterpriseId
......@@ -231,28 +221,6 @@ public interface MemberUnionidRelatedApiService {
/**
* 根据id查询
*
* @param memberUnionidRelatedId 成员unionid相关id
* @return {@link MemberUnionidRelatedDTO }
* @author mozhu
* @date 2022-03-11 17:02:45
*/
MemberUnionidRelatedDTO getById(String memberUnionidRelatedId);
/**
* 更新对外联系人id
*
* @param selfExternalUserid 自外部用户标识
* @param memberUnionidRelatedId 成员unionid相关id
* @author mozhu
* @date 2022-03-11 16:59:24
*/
void updateSelfExternalUseridById(String selfExternalUserid, String memberUnionidRelatedId);
/**
* 事件订阅test
*
* @param param 参数
......
package com.gic.haoban.manage.api.service;
import java.util.List;
import java.util.Map;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.QwPendingIdDTO;
/**
*
* @ClassName: QwFriendApiService
* @Description: 企微好友
* @author xugh
* @date 2022年9月27日 上午10:09:14
*
*/
public interface QwFriendApiService {
/**
*
* @Title: pendingCheck
* @Description: 校验商户能否获取pending
* @author xugh
* @param enterpriseId
* @param unionid
* @param openid
* @param wxaOpenid
* @return
* @throws
*/
public ServiceResponse<Map<String,String>> pendingIdCheck(String enterpriseId, String unionid, String openid, String wxaUnionid,String wxaOpenid);
public ServiceResponse<Map<String,String>> pendingIdCheck(String enterpriseId);
/**
*
* @Title: getPendingIdByUnionid
* @Description: 通过uniond获取好友id/pendingid
* @author xugh
* @param enterpriseId
* @param unionid
* @param openid 小程序或者服务号openid
* @return
* @throws
*/
public ServiceResponse<QwPendingIdDTO> getPendingIdByUnionid(String enterpriseId, String unionid, String openid);
/**
*
* @Title: getPendingIdByExternalid
* @Description: 通过好友id查询pendingid
* @author xugh
* @param enterpriseId
* @param externalUserId
* @return
* @throws
*/
public ServiceResponse<QwPendingIdDTO> getPendingIdByExternalid(String enterpriseId, String externalUserId);
/**
*
* @Title: getPendingIdByExternalid
* @Description: 通过好友id查询pendingid
* @author xugh
* @param enterpriseId
* @param externalUserId
* @return
* @throws
*/
public ServiceResponse<List<QwPendingIdDTO>> listPendingIdByExternalid(String enterpriseId,
List<String> externalUserIdList);
/**
*
* @Title: getCallTimes
* @Description: 获取调用次数
* @author xugh
* @param wxEnterpriseId
* @return
* @throws
*/
public ServiceResponse<Object> getCallTimes(String wxEnterpriseId) ;
}
......@@ -279,4 +279,15 @@ public interface StaffApiService {
*/
boolean isManager(String clerkId);
/**
* 绑定的员工列表
*
* @param storeIds 存储id
* @param wxEnterpriseId wx企业标识
* @return {@link List }<{@link StaffDTO }>
* @author mozhu
* @date 2022-10-21 00:25:46
*/
List<StaffDTO> listBindStoreIds(List<String> storeIds,String wxEnterpriseId);
}
......@@ -58,6 +58,12 @@
<artifactId>haoban-config</artifactId>
<version>${haoban-config}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>log-record-sdk</artifactId>
<version>${log-record-sdk}</version>
</dependency>
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
......@@ -162,11 +168,6 @@
<artifactId>gic-enterprise-operation-api</artifactId>
<version>${gic-enterprise-operation-api}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>log-record-sdk</artifactId>
<version>${log-record-sdk}</version>
</dependency>
</dependencies>
<build>
......
......@@ -9,20 +9,6 @@ public interface MemberUnionidRelatedMapper {
int insert(MemberUnionidRelated record);
MemberUnionidRelated selectByPrimaryKey(String memberUnionidRelatedId);
int updateByPrimaryKeySelective(MemberUnionidRelated record);
int cleanByCid(@Param("cid") String cid);
MemberUnionidRelated getByUnionId(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("staffId") String staffId, @Param("unionid") String unionid);
void deleteByUnionidAndUserId(@Param("externalUserid") String externalUserid, @Param("staffId") String staffId);
void delMemberUnionidRelatedBatch(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("externalUserids") List<String> externalUserid, @Param("staffId") String staffId);
void cleanStaffRelated(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("staffIds") List<String> staffIds);
/**
* 根据应用内的外部联系人获取信息
*
......@@ -33,9 +19,6 @@ public interface MemberUnionidRelatedMapper {
*/
MemberUnionidRelated getBySelfExternalUserId(@Param("staffId") String staffId, @Param("wxEnterpriseId") String wxEnterpriseId, @Param("selfExternalUserId") String selfExternalUserId);
List<MemberUnionidRelated> listBySelfExternalUserId(@Param("staffId") String staffId, @Param("wxEnterpriseId") String wxEnterpriseId, @Param("selfExternalUserId") String selfExternalUserId);
List<MemberUnionidRelated> listByWxEnterpriseIdAndExternalUserId(@Param("wxEnterpriseId") String wxEnterpriseId , @Param("list")List<String> externalUserIdList);
}
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.service.entity.TabHaobanStaffDepartmentRelated;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import com.gic.haoban.manage.service.entity.TabHaobanStaffDepartmentRelated;
public interface StaffDepartmentRelatedMapper {
......@@ -39,4 +41,6 @@ public interface StaffDepartmentRelatedMapper {
@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("staffId") String staffId
);
List<String> listNoDepartStaff(@Param("wxEnterpriseId")String wxEnterpriseId , @Param("addDate")Date addDate) ;
}
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
......@@ -133,4 +134,16 @@ public interface StaffMapper {
* @date 2022-07-25 16:36:07
*/
int resetAddNum();
/**
* 绑定的员工列表(暂时取100条,后续和前端一起改为分页接口)
*
* @param storeIds 存储id
* @param wxEnterpriseId wx企业标识
* @return {@link List }<{@link StaffDTO }>
* @author mozhu
* @date 2022-10-21 00:26:47
*/
List<StaffDTO> listBindStoreIds(@Param("storeIds") List<String> storeIds,
@Param("wxEnterpriseId") String wxEnterpriseId);
}
\ No newline at end of file
......@@ -20,7 +20,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
TabHaobanExternalClerkRelated selectByClerkIdAndExternalUserId(@Param("clerkId") String clerkId,
@Param("externalUserId") String externalUserId);
int delByUserIdAndExternalUserId(TabHaobanExternalClerkRelated record);
int delByUserIdAndExternalUserId(@Param("externalUserId") String externalUserId , @Param("staffId") String staffId);
void delByUserIdAndExternalUserIdBatch(@Param("staffId") String staffId,
@Param("wxEnterpriseId") String wxEnterpriseId,
......@@ -380,5 +380,4 @@ public interface TabHaobanExternalClerkRelatedMapper {
void updateClerkInfo(@Param("staffId")String staffId, @Param("oldClerkId")String oldClerkId, @Param("newClerkId")String newClerkId, @Param("storeId")String storeId);
}
\ No newline at end of file
......@@ -38,16 +38,6 @@ public interface WxEnterpriseMapper {
TabHaobanWxEnterprise getEnterpriseBycorpId(@Param("corpId") String corpId, @Param("statusFlag") Integer statusFlag);
/**
* 获取公司by企业名称
*
* @param corpName 公司名称
* @return {@link TabHaobanWxEnterprise }
* @author mozhu
* @date 2021-12-20 20:09:52
*/
TabHaobanWxEnterprise getEnterpriseByCorpName(@Param("corpName") String corpName);
/**
* 更新是否转化外部联系人
*
* @param externalFlag 外部标志
......
......@@ -8,8 +8,6 @@ import com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseRelated;
public interface WxEnterpriseRelatedMapper {
int deleteByPrimaryKey(String wxEnterpriseRelatedId);
int deleteByEnterpriseId(String enterpriseId) ;
int insertSelective(TabHaobanWxEnterpriseRelated record);
......
......@@ -43,6 +43,15 @@ public class TabHaobanExternalClerkRelated implements Serializable {
private Date createTime;
private Date updateTime;
private String selfExternalUserid;
public String getSelfExternalUserid() {
return selfExternalUserid;
}
public void setSelfExternalUserid(String selfExternalUserid) {
this.selfExternalUserid = selfExternalUserid;
}
public String getHeadUrl() {
return headUrl;
......
......@@ -8,8 +8,11 @@ public enum HaoBanErrCode {
ERR_0001("10100001", "参数没有传"),
ERR_10012("10012","企业微信不存在"),
ERR_OTHER("9999","业务异常"),
ERR_100033("100033", "活码分组已经被关联,不可删除")
ERR_100033("100033", "活码分组已经被关联,不可删除"),
ERR_2000("2000", "企微接口调用次数限制-月"),
ERR_2001("2001", "企微接口调用次数限制-天"),
ERR_2002("2002", "企微接口调用次数限制-小时"),
ERR_2010("2010", "pending接口调用限制")
;
private String code;
......
package com.gic.haoban.manage.service.pojo.bo;
public class QwLimitTimesBO {
private int month;
private int day;
private int hour;
public int getMonth() {
return month;
}
public int getDay() {
return day;
}
public int getHour() {
return hour;
}
public void setMonth(int month) {
this.month = month;
}
public void setDay(int day) {
this.day = day;
}
public void setHour(int hour) {
this.hour = hour;
}
}
package com.gic.haoban.manage.service.pojo.bo;
import java.io.Serializable;
public class WxEnterpriseRelationBO implements Serializable {
private static final long serialVersionUID = 4140789670421435421L;
private String wxEnterpriseRelatedId;
private String wxEnterpriseId;
private String enterpriseId;
private int wxEnterpriseType;
private int memberOpenCardFlag;
public String getWxEnterpriseRelatedId() {
return wxEnterpriseRelatedId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public int getWxEnterpriseType() {
return wxEnterpriseType;
}
public int getMemberOpenCardFlag() {
return memberOpenCardFlag;
}
public void setWxEnterpriseRelatedId(String wxEnterpriseRelatedId) {
this.wxEnterpriseRelatedId = wxEnterpriseRelatedId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public void setWxEnterpriseType(int wxEnterpriseType) {
this.wxEnterpriseType = wxEnterpriseType;
}
public void setMemberOpenCardFlag(int memberOpenCardFlag) {
this.memberOpenCardFlag = memberOpenCardFlag;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
}
......@@ -15,7 +15,7 @@ public interface ExternalClerkRelatedService {
* 删除好友
* @param dto
*/
void delByUserIdAndExternalUserId(MemberUnionidRelatedDTO dto , String wxUserId);
void delByUserIdAndExternalUserId(MemberUnionidRelatedDTO dto);
/**
* 删除会员与导购的关联关系
......
package com.gic.haoban.manage.service.service;
import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.manage.service.entity.MemberUnionidRelated;
import com.github.pagehelper.PageInfo;
import java.util.List;
public interface MemberUnionRelatedService {
MemberUnionidRelatedDTO getByWxUserIdAndUnionId(String wxEnterpriseId, String staffId, String unionid);
String addMemberUnionidRelated(MemberUnionidRelatedDTO dto);
void delMemberUnionidRelated(MemberUnionidRelatedDTO dto , String staffId);
/**
* 删除外部联系人关系
*
* @param wxEnterpriseId
* @param wxUserId
* @param externalUserids
*/
void delMemberUnionidRelatedBatch(String wxEnterpriseId, String staffId, List<String> externalUserids);
void update(MemberUnionidRelatedDTO exsitDTO);
void clean(String cid);
void cleanStaffRelated(String wxEnterpriseId, List<String> staffIds);
/**
* 根据应用内的外部联系人id 获取信息
*
* @param wxUserId
* @param wxEnterpriseId
* @param selfExternalUserId
* @return
*/
MemberUnionidRelatedDTO getByWxUserIdAndSelfExternalUserId(String staffId, String wxEnterpriseId, String selfExternalUserId);
/**
* 根据应用内的外部联系人id 获取信息
*
* @param wxEnterpriseId wx企业标识
* @param selfExternalUserId 自外部的用户id
* @return {@link MemberUnionidRelatedDTO }
* @author mozhu
* @date 2021-12-23 22:35:47
*/
MemberUnionidRelatedDTO getBySelfExternalUserId(String wxEnterpriseId, String selfExternalUserId);
/**
* 根据应用内的外部联系人id 获取信息
*
* @param wxUserId
* @param wxEnterpriseId
* @param selfExternalUserId
* @return
*/
List<MemberUnionidRelatedDTO> listBySelfExternalUserId(String staffId, String wxEnterpriseId, String selfExternalUserId);
}
package com.gic.haoban.manage.service.service;
import com.gic.haoban.manage.api.dto.StaffDepartmentRelatedDTO;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanStaffDepartmentRelated;
import java.util.List;
......@@ -33,4 +34,16 @@ public interface StaffDepartmentRelatedService {
public int update(TabHaobanStaffDepartmentRelated tab);
/**
*
* @Title: repairAllStaffDepart
* @Description: 定时修复成员部门
* @author xugh
* @param params
* @throws
*/
public void repairAllStaffDepart(String params) ;
public void repairStaffDepart(String staffId) ;
public void staffDepartChange(TabHaobanStaff staff, String wxEnterpriseId, Integer[] departmentIds) ;
}
package com.gic.haoban.manage.service.service;
import java.util.List;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseRelated;
import java.util.List;
import com.gic.haoban.manage.service.pojo.bo.WxEnterpriseRelationBO;
public interface WxEnterpriseRelatedService {
......@@ -37,4 +38,8 @@ public interface WxEnterpriseRelatedService {
void setClerkEdit(String id, int clerkEditFlag);
int getRelationCount(String enterpriseId) ;
public WxEnterpriseRelationBO getHeadEnterprise(String enterpriseId) ;
public boolean getAddByWelcomeFlag(TabHaobanWxEnterpriseRelated wxEnterpriseRelated , String unionid , boolean isHmUnionid) ;
}
......@@ -38,16 +38,6 @@ public interface WxEnterpriseService {
int unbind(String wxEnterpriseId);
/**
* 得到企业bycorp名称
*
* @param corpName 公司名称
* @return {@link TabHaobanWxEnterprise }
* @author mozhu
* @date 2021-12-20 20:09:21
*/
TabHaobanWxEnterprise getEnterpriseByCorpName(String corpName);
/**
* 所有企业微信
*
* @return
......
......@@ -65,10 +65,6 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
@Autowired
private MemberApiService memberApiService;
@Autowired
private StaffMapper staffMapper;
@Autowired
private TabHaobanStaffClerkRelationMapper staffClerkRelationMapper;
@Autowired
private WxUserAddLogService wxUserAddLogService;
@Autowired
private StoreService storeService;
......@@ -105,34 +101,22 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
}
@Override
public void delByUserIdAndExternalUserId(MemberUnionidRelatedDTO dto, String wxUserId) {
int count = mapper.delByUserIdAndExternalUserId(EntityUtil.changeEntityByJSON(TabHaobanExternalClerkRelated.class, dto));
if (count <= 0) {
logger.error("无需删除的好友数据:{}", JSON.toJSONString(dto));
return;
}
public void delByUserIdAndExternalUserId(MemberUnionidRelatedDTO dto) {
String staffId = dto.getStaffId();
String externalUserid = dto.getExternalUserid();
List<TabHaobanExternalClerkRelated> tabHaobanExternalClerkRelatedList = mapper.listByExTernalUseridAndWxUserId(externalUserid, staffId, 2);
if (CollectionUtils.isEmpty(tabHaobanExternalClerkRelatedList)) {
logger.info("无解除的好友关系:externalUserid:{},wxUserId:{}", externalUserid, wxUserId);
return;
}
TabHaobanExternalClerkRelated related = tabHaobanExternalClerkRelatedList.get(0);
String wxEnterpriseId = related.getWxEnterpriseId();
TabHaobanStaff tabHaobanStaff = staffMapper.selectByUserIdAndEnterpriseId(wxUserId, wxEnterpriseId);
if (null == tabHaobanStaff) {
logger.error("找不到员工:wxUserId:{}", wxUserId);
int count = mapper.delByUserIdAndExternalUserId(externalUserid,staffId);
if (count <= 0) {
logger.error("无需删除的好友数据:{}", JSON.toJSONString(dto));
return;
}
staffId = tabHaobanStaff.getStaffId();
List<TabHaobanStaffClerkRelation> tabHaobanStaffClerkRelations = staffClerkRelationMapper.lisByStaffId(wxEnterpriseId, staffId, null);
if (CollectionUtils.isEmpty(tabHaobanStaffClerkRelations)) {
logger.error("找不到员工导购关联关系:staffId:{},wxEnterpriseId:{}", staffId, wxEnterpriseId);
String wxEnterpriseId = dto.getWxEnterpriseId() ;
List<TabHaobanExternalClerkRelated> deleteRelatedList = mapper.listByExTernalUseridAndWxUserId(externalUserid, staffId, 2);
if (CollectionUtils.isEmpty(deleteRelatedList)) {
logger.info("无解除的好友关系:externalUserid:{},staffId:{}", externalUserid,staffId);
return;
}
String enterpriseId = tabHaobanStaffClerkRelations.get(0).getEnterpriseId();
TabHaobanExternalClerkRelated related = deleteRelatedList.get(0);
String enterpriseId = related.getEnterpriseId() ;
//该企微该会员所有关联关系解除后通知会员
List<TabHaobanExternalClerkRelated> list = mapper.listByExternalUseridAndWxEnterpriseId(dto.getExternalUserid(), wxEnterpriseId, Arrays.asList("1", "3", "4"));
if (CollectionUtils.isEmpty(list)) {
......@@ -146,14 +130,12 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
}
} else {
//删除后 每次回调会员
List<TabHaobanExternalClerkRelated> relatedList = mapper.listByExTernalUseridAndWxUserId(dto.getExternalUserid(), wxUserId, 2);
for (TabHaobanExternalClerkRelated externalClerkRelated : relatedList) {
for (TabHaobanExternalClerkRelated externalClerkRelated : deleteRelatedList) {
String memberId = externalClerkRelated.getMemberId();
logger.info("通知会员 删除会员后更新为非企微好友时间 memberId:{}", memberId);
memberApiService.updateMemberQywxEveryOccasion(enterpriseId, memberId, 1, new Date());
}
}
//添加日志
WxUserAddLogQDTO wxUserAddLogQDTO = new WxUserAddLogQDTO();
wxUserAddLogQDTO.setWxEnterpriseId(wxEnterpriseId);
......@@ -165,7 +147,6 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
wxUserAddLogQDTO.setStaffId(related.getStaffId());
wxUserAddLogQDTO.setClerkId(related.getClerkId());
wxUserAddLogService.save(wxUserAddLogQDTO);
//定制
addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0);
}
......
package com.gic.haoban.manage.service.service.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gic.commons.util.EntityUtil;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.manage.service.dao.mapper.MemberUnionidRelatedMapper;
import com.gic.haoban.manage.service.entity.MemberUnionidRelated;
import com.gic.haoban.manage.service.service.MemberUnionRelatedService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@Service
public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService {
......@@ -23,64 +18,29 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
private MemberUnionidRelatedMapper mapper;
@Override
public MemberUnionidRelatedDTO getByWxUserIdAndUnionId(String wxEnterpriseId, String staffId, String unionid) {
return EntityUtil.changeEntityByJSON(MemberUnionidRelatedDTO.class, mapper.getByUnionId(wxEnterpriseId, staffId, unionid));
}
@Override
public String addMemberUnionidRelated(MemberUnionidRelatedDTO dto) {
String wxEnterpriseId = dto.getWxEnterpriseId() ;
String staffId = dto.getStaffId() ;
String selfExternalUserId = dto.getSelfExternalUserid() ;
MemberUnionidRelated oldDTO = this.mapper.getBySelfExternalUserId(staffId, wxEnterpriseId, selfExternalUserId) ;
if(null != oldDTO) {
return oldDTO.getMemberUnionidRelatedId() ;
}
dto.setStatusFlag(1);
dto.setCreateTime(new Date());
dto.setUpdateTime(new Date());
dto.setMemberUnionidRelatedId(StringUtil.randomUUID());
String unionid = dto.getUnionid() ;
// unionid不保存,但需要传递
dto.setUnionid(null);
mapper.insert(EntityUtil.changeEntityByJSON(MemberUnionidRelated.class, dto));
dto.setUnionid(unionid);
return dto.getMemberUnionidRelatedId();
}
@Override
public void delMemberUnionidRelated(MemberUnionidRelatedDTO dto , String staffId) {
mapper.deleteByUnionidAndUserId(dto.getExternalUserid(),staffId);
}
@Override
public void delMemberUnionidRelatedBatch(String wxEnterpriseId, String staffId, List<String> externalUserids) {
mapper.delMemberUnionidRelatedBatch(wxEnterpriseId, externalUserids, staffId);
}
@Override
public void update(MemberUnionidRelatedDTO exsitDTO) {
exsitDTO.setUpdateTime(new Date());
mapper.updateByPrimaryKeySelective(EntityUtil.changeEntityByJSON(MemberUnionidRelated.class, exsitDTO));
}
@Override
public void clean(String cid) {
mapper.cleanByCid(cid);
}
@Override
public void cleanStaffRelated(String wxEnterpriseId, List<String> staffIds) {
if(staffIds == null || staffIds.isEmpty()){
return;
}
mapper.cleanStaffRelated(wxEnterpriseId,staffIds);
}
@Override
public MemberUnionidRelatedDTO getByWxUserIdAndSelfExternalUserId(String staffId, String wxEnterpriseId, String selfExternalUserId) {
MemberUnionidRelated unionidRelated = mapper.getBySelfExternalUserId(staffId,wxEnterpriseId, selfExternalUserId);
return EntityUtil.changeEntityNew(MemberUnionidRelatedDTO.class, unionidRelated);
}
@Override
public MemberUnionidRelatedDTO getBySelfExternalUserId(String wxEnterpriseId, String selfExternalUserId) {
MemberUnionidRelated unionidRelated = mapper.getBySelfExternalUserId(null,wxEnterpriseId, selfExternalUserId);
return EntityUtil.changeEntityNew(MemberUnionidRelatedDTO.class, unionidRelated);
}
@Override
public List<MemberUnionidRelatedDTO> listBySelfExternalUserId(String staffId, String wxEnterpriseId, String selfExternalUserId) {
List<MemberUnionidRelated> retList = mapper.listBySelfExternalUserId(staffId, wxEnterpriseId, selfExternalUserId);
return EntityUtil.changeEntityListNew(MemberUnionidRelatedDTO.class, retList);
}
}
package com.gic.haoban.manage.service.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.haoban.common.utils.DingUtils;
import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.DepartmentDTO;
import com.gic.haoban.manage.api.dto.SecretSettingDTO;
import com.gic.haoban.manage.api.dto.StaffDepartmentRelatedDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.enums.SecretTypeEnum;
import com.gic.haoban.manage.service.dao.mapper.StaffDepartmentRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.StaffMapper;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanStaffDepartmentRelated;
import com.gic.haoban.manage.service.service.DepartmentService;
import com.gic.haoban.manage.service.service.SecretSettingService;
import com.gic.haoban.manage.service.service.StaffDepartmentRelatedService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.google.common.collect.Sets;
@Service
public class StaffDepartmentRelatedServiceImpl implements StaffDepartmentRelatedService {
private static final Logger logger = LogManager.getLogger(StaffDepartmentRelatedService.class);
@Autowired
private StaffDepartmentRelatedMapper mapper;
@Autowired
private StaffMapper staffMapper ;
@Autowired
private SecretSettingService secretSettingService ;
@Autowired
private WxEnterpriseService wxEnterpriseService ;
@Autowired
private QywxUserApiService qywxUserApiService ;
@Autowired
private DepartmentService departmentService ;
@Override
public List<TabHaobanStaffDepartmentRelated> listByDepartmentId(String departmentId) {
......@@ -79,4 +116,115 @@ public class StaffDepartmentRelatedServiceImpl implements StaffDepartmentRelated
return mapper.updateByPrimaryKeySelective(tab);
}
@Override
public void repairAllStaffDepart(String params) {
logger.info("修复无部门成员={}",params);
int addDay = 0 ;
String wxEnterpriseId = null ;
if(params.contains("#")) {
addDay = Integer.parseInt(params.split("#")[0]) ;
wxEnterpriseId = params.split("#")[1] ;
}else {
addDay = Integer.parseInt(params) ;
}
Date addDate = DateUtil.addDay(DateUtil.getStartTimeOfDay(),-addDay) ;
List<String> list = this.mapper.listNoDepartStaff(wxEnterpriseId, addDate) ;
if(CollectionUtils.isNotEmpty(list)) {
logger.info("修复成员部门,成员数={}",list.size());
DingUtils.send("修复无部门成员消息,数量="+list.size(), false);
for(String staffId : list) {
this.repairStaffDepart(staffId);
}
}
logger.info("修复成员部门完成={}",params);
}
@Override
public void repairStaffDepart(String staffId) {
TabHaobanStaff staff = this.staffMapper.selectByPrimaryKey(staffId) ;
String wxEnterpriseId = staff.getWxEnterpriseId() ;
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ;
if(null == qwDTO) {
return ;
}
String wxUserId = staff.getWxUserId() ;
if(qwDTO.needOpenUserIdDk()) {
wxUserId = staff.getWxOpenUseId() ;
}
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(qwDTO.getWxEnterpriseId(), SecretTypeEnum.CUSTOMIZED_APP.getVal());
if (null != secretSetting && StringUtils.isNotBlank(secretSetting.getSecretVal())) {
UserDTO user = qywxUserApiService.getSelfWorkWxUser(qwDTO.getDkCorpid(), secretSetting.getSecretVal(), wxUserId);
logger.info("成员详情(代开)={}",JSON.toJSONString(user)) ;
if(null != user.getDepartment()) {
this.staffDepartChange(staff, wxEnterpriseId, user.getDepartment()); ;
}
}
}
public void staffDepartChange(TabHaobanStaff staff, String wxEnterpriseId, Integer[] departmentIds) {
//更新部门
List<String> wxDepartIds = new ArrayList<>();
for (Integer wDId : departmentIds) {
wxDepartIds.add(wDId.toString());
}
//关联部门
List<DepartmentDTO> departmentDTOList = departmentService.listDepartmentByWxDepartIds(wxEnterpriseId, wxDepartIds);
if (CollectionUtils.isEmpty(departmentDTOList)) {
logger.info("部门没有更新或同步:{}", wxEnterpriseId);
return;
}
//已存在部门
List<TabHaobanStaffDepartmentRelated> hasRelation = this.listStaffDepartmentByStaffId(staff.getStaffId());
Map<String, TabHaobanStaffDepartmentRelated> hasRelationMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(hasRelation)) {
hasRelationMap = hasRelation.stream().collect(Collectors.toMap(TabHaobanStaffDepartmentRelated::getDepartmentId, tab -> tab));
}
//新增操作
for (DepartmentDTO departmentDTO : departmentDTOList) {
if (!hasRelationMap.containsKey(departmentDTO.getDepartmentId())) {
StaffDepartmentRelatedDTO dto = new StaffDepartmentRelatedDTO();
dto.setPhoneNumber(staff.getPhoneNumber());
dto.setStaffId(staff.getStaffId());
dto.setStaffName(staff.getStaffName());
dto.setWxEnterpriseId(wxEnterpriseId);
dto.setStatusFlag(1);
dto.setDepartmentId(departmentDTO.getDepartmentId());
dto.setNationCode(staff.getNationCode());
this.add(dto);
}
}
//删除操作
Set<String> newDepartIds = departmentDTOList.stream().map(DepartmentDTO::getDepartmentId).collect(Collectors.toSet());
Set<String> hasDepartIds = hasRelationMap.keySet();
Sets.SetView<String> delDepartIds = Sets.difference(hasDepartIds, newDepartIds);
Sets.SetView<String> updateDepartIds = Sets.intersection(newDepartIds, hasDepartIds);//交集
logger.info("删除部门:{}", JSONObject.toJSONString(delDepartIds));
if (CollectionUtils.isNotEmpty(delDepartIds)) {
for (String delDepartId : delDepartIds) {
TabHaobanStaffDepartmentRelated departmentRelated = hasRelationMap.get(delDepartId);
if (null != departmentRelated) {
StaffDepartmentRelatedDTO relatedDTO = new StaffDepartmentRelatedDTO();
relatedDTO.setStaffDepartmentRelatedId(departmentRelated.getStaffDepartmentRelatedId());
this.del(relatedDTO);
}
}
}
if (CollectionUtils.isNotEmpty(updateDepartIds)) {
for (String updateDeId : updateDepartIds) {
TabHaobanStaffDepartmentRelated departmentRelated = hasRelationMap.get(updateDeId);
if (null != departmentRelated) {
departmentRelated.setPhoneNumber(staff.getPhoneNumber());
departmentRelated.setStaffName(staff.getStaffName());
departmentRelated.setNationCode(staff.getNationCode());
departmentRelated.setUpdateTime(new Date());
this.update(departmentRelated);
}
}
}
}
}
......@@ -15,7 +15,6 @@ import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.service.dao.mapper.StaffMapper;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.service.MemberUnionRelatedService;
import com.gic.haoban.manage.service.service.StaffService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
......@@ -27,8 +26,6 @@ public class StaffServiceImpl implements StaffService {
@Autowired
private StaffMapper mapper;
@Autowired
private MemberUnionRelatedService memberUnionRelatedService;
@Override
public TabHaobanStaff selectById(String id) {
if (StringUtils.isBlank(id)) {
......@@ -103,7 +100,6 @@ public class StaffServiceImpl implements StaffService {
@Override
public int cleanStaff(String wxEnterpriseId, List<String> staffIds) {
memberUnionRelatedService.cleanStaffRelated(wxEnterpriseId, staffIds);
return mapper.cleanStaff(wxEnterpriseId, staffIds);
}
......
......@@ -91,12 +91,10 @@ public class WelcomeServiceImpl implements WelcomeService {
@Autowired
private WelcomeRelationService welcomeRelationService;
@Autowired
private KeyDataService keyDataService;
@Autowired
private HmLinkService linkService;
@Autowired
private HmQrcodeService qrcodeService;
private static final int WELCOME_LIMIT = 50;
private static final int WELCOME_LIMIT = 100;
private static final int DEPARTMENT_NUM_LIMIT = 10000;
private static final int STAFF_NUM_LIMIT = 2000;
private static final int MEDIA_NUM_LIMIT = 9;
......@@ -144,10 +142,10 @@ public class WelcomeServiceImpl implements WelcomeService {
long count = welcomeMapper.countByWxEnterpriseId(bo.getWxEnterpriseId(), bo.getType());
if (count >= WELCOME_LIMIT) {
if (HmWelcomeType.NORMAL.getCode().equals(bo.getType())){
return "普通欢迎语最多可创建50条";
return "普通欢迎语最多可创建"+WELCOME_LIMIT+"条";
}
if (HmWelcomeType.SPECIAL.getCode().equals(bo.getType())){
return "特殊欢迎语最多可创建50条";
return "特殊欢迎语最多可创建"+WELCOME_LIMIT+"条";
}
return "欢迎语条目超过限制";
}
......
package com.gic.haoban.manage.service.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.EnterpriseSettingDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseRelatedMapper;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseRelated;
import com.gic.haoban.manage.service.pojo.bo.WxEnterpriseRelationBO;
import com.gic.haoban.manage.service.service.WxEnterpriseRelatedService;
import java.util.ArrayList;
......@@ -30,6 +36,8 @@ public class WxEnterpriseRelatedServiceImpl implements WxEnterpriseRelatedServic
@Autowired
private WxEnterpriseMapper wxEnterpriseMapper;
@Autowired
private EnterpriseService enterpriseService ;
@Override
public TabHaobanWxEnterpriseRelated getByGicEnterpriseIdByEnterpriseRelatedId(String wxEnterpriseRelatedId) {
......@@ -75,4 +83,43 @@ public class WxEnterpriseRelatedServiceImpl implements WxEnterpriseRelatedServic
List<TabHaobanWxEnterpriseRelated> list = this.mapper.listByEnterpriseId(enterpriseId) ;
return list.size();
}
@Override
public WxEnterpriseRelationBO getHeadEnterprise(String enterpriseId) {
TabHaobanWxEnterpriseRelated root = this.mapper.findRootWxEnterpriseByEnterpriseId(enterpriseId) ;
if(null != root) {
return EntityUtil.changeEntityByJSON(WxEnterpriseRelationBO.class, root);
}
return null;
}
@Override
public boolean getAddByWelcomeFlag(TabHaobanWxEnterpriseRelated wxEnterpriseRelated, String unionid , boolean isHmUnionid) {
int openCardFlag = wxEnterpriseRelated.getMemberOpenCardFlag() ;
int wxEnterpriseType = wxEnterpriseRelated.getWxEnterpriseType() ;
// 活码
if(StringUtils.isNotBlank(unionid) && isHmUnionid) {
return false ;
}
// unionid存在,并且在同一开放平台,可以创建客户
if(StringUtils.isNotBlank(unionid) && openCardFlag==0) {
return false ;
}
String enterpriseId = wxEnterpriseRelated.getEnterpriseId() ;
EnterpriseSettingDTO setting = this.enterpriseService.getEnterpriseSettingByEnterpriseId(enterpriseId) ;
String customSetting = setting.getCustomSetting() ;
boolean settFlag = true ;
if(StringUtils.isNotBlank(customSetting)) {
JSONObject json = JSON.parseObject(customSetting) ;
String pendingidFlag = json.getString("qwPendingidFlag") ;
if(StringUtils.isBlank(pendingidFlag) || "0".equals(pendingidFlag)) {
settFlag = false ;
}
}
if(openCardFlag == 0 && wxEnterpriseType ==0 && settFlag) {
return false ;
}
return true ;
}
}
......@@ -65,6 +65,9 @@ public class WxEnterpriseServiceImpl implements WxEnterpriseService {
@Override
public WxEnterpriseQwDTO getQwInfo(String wxEnterpriseId) {
TabHaobanWxEnterprise wxEnterprise = this.mapper.selectByPrimaryKey(wxEnterpriseId) ;
if(null == wxEnterprise) {
return null ;
}
WxEnterpriseQwDTO qw = new WxEnterpriseQwDTO();
qw.setWxEnterpriseId(wxEnterpriseId);
if(null != wxEnterprise.getWxSecurityType()) {
......@@ -124,14 +127,6 @@ public class WxEnterpriseServiceImpl implements WxEnterpriseService {
}
@Override
public TabHaobanWxEnterprise getEnterpriseByCorpName(String corpName) {
if (StringUtils.isBlank(corpName)) {
return null;
}
return this.mapper.getEnterpriseByCorpName(corpName);
}
@Override
public List<TabHaobanWxEnterprise> listAll() {
return mapper.listAll();
}
......
......@@ -142,7 +142,8 @@ public class AuditApiServiceImpl implements AuditApiService {
tab.setAuditStatus(5);
String reason = "该成员在该门店下已经绑定过一个导购了";
if (clerkDTO != null) {
if (clerkDTO.getClerkType() == 2) {
Integer clerkType = clerkDTO.getClerkType();
if (clerkType == 2) {
reason = "该成员在该商户下已经绑定过一个区经了";
}
}
......
......@@ -215,22 +215,12 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
externalClerkRelated.setStatusFlag(1);
tabHaobanExternalClerkRelatedMapper.updateByPrimaryKeySelective(externalClerkRelated);
//更新unionid
MemberUnionidRelated memberUnionidRelated = memberUnionidRelatedMapper.selectByPrimaryKey(externalClerkRelated.getMemberUnionidRelatedId());
if (memberUnionidRelated != null) {
memberUnionidRelated.setMemberId(memberId);
memberUnionidRelated.setUnionid(unionid);
memberUnionidRelated.setEnterpriseId(enterpriseId);
memberUnionidRelated.setUpdateTime(new Date());
memberUnionidRelatedMapper.updateByPrimaryKeySelective(memberUnionidRelated);
}
String wxEnterpriseId = externalClerkRelated.getWxEnterpriseId();
//同步标签
pushTagSync(memberId, wxEnterpriseId, enterpriseId);
//回调给会员,更新是否为企微好友
log.info("通知会员 合并会员后更新为企微好友,memberId:{}", memberId);
memberApiService.updateMemberQywxFlag(enterpriseId, memberId, 1);
//定制
addDelFriendEvent(unionid, externalClerkRelated.getClerkId(), wxEnterpriseId, enterpriseId, memberId, externalClerkRelated.getStoreId(), 1);
//日志
......
......@@ -6,6 +6,7 @@ import org.springframework.stereotype.Service;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.service.HaobanTimerApiService;
import com.gic.haoban.manage.service.service.ExternalClerkRelatedService;
import com.gic.haoban.manage.service.service.StaffDepartmentRelatedService;
import com.gic.haoban.manage.service.service.hm.HmQrcodeTempService;
@Service("haobanTimerApiService")
......@@ -13,10 +14,10 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
@Autowired
private HmQrcodeTempService hmQrcodeTempService ;
@Autowired
private ExternalClerkRelatedService externalClerkRelatedService ;
@Autowired
private StaffDepartmentRelatedService staffDepartmentRelatedService ;
@Override
public ServiceResponse<Void> deleteTempWxHm(String params) {
......@@ -30,5 +31,10 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
return ServiceResponse.success();
}
@Override
public ServiceResponse<Void> repairStaffDepart(String params) {
this.staffDepartmentRelatedService.repairAllStaffDepart(params);
return ServiceResponse.success();
}
}
package com.gic.haoban.manage.service.service.out.impl;
import cn.hutool.core.collection.CollectionUtil;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
......@@ -33,7 +49,16 @@ import com.gic.haoban.manage.service.entity.TabHaobanDepartment;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanStaffDepartmentRelated;
import com.gic.haoban.manage.service.entity.TabHaobanSyncErrorLog;
import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.service.DepartmentService;
import com.gic.haoban.manage.service.service.SecretSettingService;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.StaffDepartmentRelatedService;
import com.gic.haoban.manage.service.service.StaffPrivacyUseLogService;
import com.gic.haoban.manage.service.service.StaffService;
import com.gic.haoban.manage.service.service.StoreRangeService;
import com.gic.haoban.manage.service.service.SyncErrorLogService;
import com.gic.haoban.manage.service.service.UserLoginLogService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.util.EmojiFilterUtil;
import com.gic.redis.data.util.RedisUtil;
import com.gic.thirdparty.api.dto.PicUploadResDTO;
......@@ -43,17 +68,6 @@ import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
public class StaffApiServiceImpl implements StaffApiService {
......@@ -90,8 +104,6 @@ public class StaffApiServiceImpl implements StaffApiService {
@Autowired
private StaffPrivacyUseLogService staffPrivacyUseLogService;
@Autowired
private WxApplicationService wxApplicationService;
@Autowired
private StoreWidgetService storeWidgetService;
@Autowired
private PowerService powerService;
......@@ -123,6 +135,10 @@ public class StaffApiServiceImpl implements StaffApiService {
@Override
public List<StaffDepartmentRelatedDTO> listStaffDepartmentByStaffId(String staffId) {
List<TabHaobanStaffDepartmentRelated> list = staffDepartmentRelatedService.listStaffDepartmentByStaffId(staffId);
// 如果成员部门为空,修复部门数据
if(CollectionUtils.isEmpty(list)) {
this.staffDepartmentRelatedService.repairStaffDepart(staffId);
}
return EntityUtil.changeEntityListByJSON(StaffDepartmentRelatedDTO.class, list);
}
......@@ -250,7 +266,7 @@ public class StaffApiServiceImpl implements StaffApiService {
staffService.updateByPrimaryKey(staff);
}
logger.info("staff变更保存:{}", JSONObject.toJSONString(user));
staffDepartChange(staff, wxEnterpriseId, user);
this.staffDepartmentRelatedService.staffDepartChange(staff, wxEnterpriseId, user.getDepartment());
// 返回结果带上员工姓名
res.setResult(staff.getStaffName());
return res;
......@@ -320,74 +336,6 @@ public class StaffApiServiceImpl implements StaffApiService {
return arr;
}
private void staffDepartChange(TabHaobanStaff staff, String wxEnterpriseId, UserDTO user) {
//更新部门
Integer[] departmentIds = user.getDepartment();
List<String> wxDepartIds = new ArrayList<>();
for (Integer wDId : departmentIds) {
wxDepartIds.add(wDId.toString());
}
//关联部门
List<DepartmentDTO> departmentDTOList = departmentService.listDepartmentByWxDepartIds(wxEnterpriseId, wxDepartIds);
if (CollectionUtils.isEmpty(departmentDTOList)) {
logger.info("部门没有更新或同步:{}", wxEnterpriseId);
return;
}
//已存在部门
List<TabHaobanStaffDepartmentRelated> hasRelation = staffDepartmentRelatedService.listStaffDepartmentByStaffId(staff.getStaffId());
Map<String, TabHaobanStaffDepartmentRelated> hasRelationMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(hasRelation)) {
hasRelationMap = hasRelation.stream().collect(Collectors.toMap(TabHaobanStaffDepartmentRelated::getDepartmentId, tab -> tab));
}
//新增操作
for (DepartmentDTO departmentDTO : departmentDTOList) {
if (!hasRelationMap.containsKey(departmentDTO.getDepartmentId())) {
StaffDepartmentRelatedDTO dto = new StaffDepartmentRelatedDTO();
dto.setPhoneNumber(staff.getPhoneNumber());
dto.setStaffId(staff.getStaffId());
dto.setStaffName(user.getName());
dto.setWxEnterpriseId(wxEnterpriseId);
dto.setStatusFlag(1);
dto.setDepartmentId(departmentDTO.getDepartmentId());
dto.setNationCode(staff.getNationCode());
dto.setStaffName(user.getName());
staffDepartmentRelatedService.add(dto);
}
}
//删除操作
Set<String> newDepartIds = departmentDTOList.stream().map(DepartmentDTO::getDepartmentId).collect(Collectors.toSet());
Set<String> hasDepartIds = hasRelationMap.keySet();
Sets.SetView<String> delDepartIds = Sets.difference(hasDepartIds, newDepartIds);
Sets.SetView<String> updateDepartIds = Sets.intersection(newDepartIds, hasDepartIds);//交集
logger.info("删除部门:{}", JSONObject.toJSONString(delDepartIds));
if (CollectionUtils.isNotEmpty(delDepartIds)) {
for (String delDepartId : delDepartIds) {
TabHaobanStaffDepartmentRelated departmentRelated = hasRelationMap.get(delDepartId);
if (null != departmentRelated) {
StaffDepartmentRelatedDTO relatedDTO = new StaffDepartmentRelatedDTO();
relatedDTO.setStaffDepartmentRelatedId(departmentRelated.getStaffDepartmentRelatedId());
staffDepartmentRelatedService.del(relatedDTO);
}
}
}
if (CollectionUtils.isNotEmpty(updateDepartIds)) {
for (String updateDeId : updateDepartIds) {
TabHaobanStaffDepartmentRelated departmentRelated = hasRelationMap.get(updateDeId);
if (null != departmentRelated) {
departmentRelated.setPhoneNumber(staff.getPhoneNumber());
departmentRelated.setStaffName(staff.getStaffName());
departmentRelated.setNationCode(staff.getNationCode());
departmentRelated.setUpdateTime(new Date());
staffDepartmentRelatedService.update(departmentRelated);
}
}
}
}
@Override
public ServiceResponse wxGetAdd(String userId, String wxEnterpriseId) {
RedisUtil.lock("haoban_add_user" + wxEnterpriseId + userId, 2L);
......@@ -1018,4 +966,9 @@ public class StaffApiServiceImpl implements StaffApiService {
}
return false;
}
@Override
public List<StaffDTO> listBindStoreIds(List<String> storeIds, String wxEnterpriseId) {
return staffMapper.listBindStoreIds(storeIds,wxEnterpriseId);
}
}
......@@ -123,8 +123,8 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
}
@Override
public List<StaffClerkRelationDTO> listBindCode(String wxEnterpriseId,String enterpriseId, Set<String> clerkCodeList) {
return staffClerkRelationService.listBindCode(wxEnterpriseId,enterpriseId, clerkCodeList);
public List<StaffClerkRelationDTO> listBindCode(String wxEnterpriseId, String enterpriseId, Set<String> clerkCodeList) {
return staffClerkRelationService.listBindCode(wxEnterpriseId, enterpriseId, clerkCodeList);
}
@Override
......@@ -163,9 +163,10 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
@Override
public ServiceResponse bindStaffClerk(StaffClerkRelationDTO staffClerkRelationDTO, String optStaffId, int channelCode) {
ServiceResponse resp = this.bindCheck(staffClerkRelationDTO, optStaffId, channelCode) ;
if(null != resp) {
return resp ;
ServiceResponse resp = this.bindCheck(staffClerkRelationDTO, optStaffId, channelCode);
if (resp != null && !resp.isSuccess()) {
logger.error("不允许绑定:{}", resp.getMessage());
return resp;
}
String relationId = staffClerkRelationService.bind(staffClerkRelationDTO, optStaffId, channelCode);
return ServiceResponse.success(relationId);
......@@ -186,26 +187,35 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
} else {
StaffClerkRelationDTO relationDTO = staffClerkRelationService.getBindByClerkId(clerkId, wxEnterpriseId);
if (null != relationDTO) {
logger.info("已经被绑定,不能绑定");
return ServiceResponse.failure("2", "已经被绑定,不能绑定");
}
}
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId, AuditType.CLERK_BIND.getCode(),wxEnterpriseId,enterpriseId);
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId, AuditType.CLERK_BIND.getCode(), wxEnterpriseId, enterpriseId);
if (null != auditDTO) {
logger.info("该导购已经被被申请绑定,请审核处理后再绑定");
return ServiceResponse.failure("4", "该导购已经被被申请绑定,请审核处理后再绑定");
}
List<AuditDTO> list = auditApiService.listByStoreId(staffClerkRelationDTO.getStoreId());
if (CollectionUtils.isNotEmpty(list)) {
Set<String> staffIds = list.stream().map(AuditDTO::getCommitStaffId).collect(Collectors.toSet());
if (staffIds.contains(staffId)) {
logger.info("该成员已经已经在该门店下申请了绑定,请审核处理后再绑定");
return ServiceResponse.failure("5", "该成员已经已经在该门店下申请了绑定,请审核处理后再绑定");
}
}
StaffClerkRelationDTO storeHasBind = staffClerkRelationService.getOneBindByStoreId(staffId, staffClerkRelationDTO.getStoreId());
if (storeHasBind != null) {
logger.info("该导购已在该门店下有其它成员绑定");
return ServiceResponse.failure("3", "该导购已在该门店下有其它成员绑定");
}
return null ;
List<StaffClerkRelationDTO> staffClerkRelationDTOS = staffClerkRelationService.listManageBindByStaffId(staffId);
if (CollectionUtils.isNotEmpty(staffClerkRelationDTOS)) {
logger.info("该导购已绑定区经,不允许绑定导购");
return ServiceResponse.failure("3", "该导购已绑定区经,不允许绑定导购");
}
return null;
}
@Override
......@@ -226,7 +236,7 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
if (CollectionUtil.isEmpty(clerkIds)) {
return Collections.emptyList();
}
return EntityUtil.changeEntityListNew(StaffClerkRelationDTO.class,tabHaobanStaffClerkRelationMapper.listByClerkIds(clerkIds, null));
return EntityUtil.changeEntityListNew(StaffClerkRelationDTO.class, tabHaobanStaffClerkRelationMapper.listByClerkIds(clerkIds, null));
}
@Override
......@@ -234,7 +244,7 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
if (CollectionUtil.isEmpty(clerkIds)) {
return Collections.emptyList();
}
return EntityUtil.changeEntityListNew(StaffClerkRelationDTO.class,tabHaobanStaffClerkRelationMapper.listByClerkIds(clerkIds, wxEnterpriseId));
return EntityUtil.changeEntityListNew(StaffClerkRelationDTO.class, tabHaobanStaffClerkRelationMapper.listByClerkIds(clerkIds, wxEnterpriseId));
}
@Override
......@@ -295,6 +305,12 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
return serviceResponse;
}
}
String staffId = staffClerkRelation.getStaffId();
List<StaffClerkRelationDTO> staffClerkRelationDTOS = staffClerkRelationService.listManageBindByStaffId(staffId);
if (CollectionUtils.isNotEmpty(staffClerkRelationDTOS)) {
logger.info("该导购已绑定区经,不允许绑定导购");
return ServiceResponse.failure("3", "该导购已绑定区经,不允许绑定导购");
}
if (StringUtils.isNotBlank(staffClerkRelation.getStaffClerkRelationId())) {
TabHaobanStaffClerkRelation oldStaffClerkRelation = tabHaobanStaffClerkRelationMapper.selectByPrimaryKey(staffClerkRelation.getStaffClerkRelationId());
tabHaobanStaffClerkRelationMapper.delByPrimaryKey(staffClerkRelation.getStaffClerkRelationId());
......@@ -488,9 +504,9 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
}
} else if (type == 2) {
logger.info("导购门店转移,新的导购和门店,clerkId={},storeId={}", clerkId, clerkSyncQDTO.getStoreId());
StaffClerkRelationDTO oldRelationDTO = staffClerkRelationService.getByCodeAndEnterpriseId(clerkCode,enterpriseId);
StaffClerkRelationDTO oldRelationDTO = staffClerkRelationService.getByCodeAndEnterpriseId(clerkCode, enterpriseId);
if (null == oldRelationDTO) {
logger.info("导购未关联成员,clerkCode={}",clerkCode);
logger.info("导购未关联成员,clerkCode={}", clerkCode);
return;
}
/* StaffClerkRelationDTO oldRelationDTO = staffClerkRelationService.getByClerkId(oldClerkId);
......@@ -533,22 +549,22 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
// 导购门店转移
private void moveOrAddClerk(ClerkSyncQDTO clerkSyncQDTO, StaffClerkRelationDTO oldRelationDTO) {
boolean flag = false ;
if(null != RedisUtil.getCache("clerkMoveFlag2022")) {
flag = true ;
boolean flag = false;
if (null != RedisUtil.getCache("clerkMoveFlag2022")) {
flag = true;
}
if(flag) {
if (flag) {
String oldClerkId = oldRelationDTO.getClerkId();
this.staffClerkRelationService.delBind(oldClerkId, "-1", ChannelCodeEnum.SYNC_UNBIND.getCode(), clerkSyncQDTO.getClerkId());
// 设置新的ID
oldRelationDTO.setClerkId(clerkSyncQDTO.getClerkId());
oldRelationDTO.setStoreId(clerkSyncQDTO.getStoreId());
ServiceResponse response = this.bindCheck(oldRelationDTO, "-1", ChannelCodeEnum.SYNC_BIND.getCode()) ;
ServiceResponse response = this.bindCheck(oldRelationDTO, "-1", ChannelCodeEnum.SYNC_BIND.getCode());
logger.info("绑定结果正常:{},{}", JSONObject.toJSONString(response), oldRelationDTO.getClerkId());
if(response==null) {
this.staffClerkRelationService.insert(oldRelationDTO) ;
if (response == null) {
this.staffClerkRelationService.insert(oldRelationDTO);
}
}else {
} else {
String oldClerkId = oldRelationDTO.getClerkId();
this.staffClerkRelationService.delBind(oldClerkId, "-1", ChannelCodeEnum.SYNC_UNBIND.getCode(), null);
// 设置新的ID
......
......@@ -18,8 +18,9 @@ import com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseRelated;
import com.gic.haoban.manage.service.exception.WxApiLimitException;
import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.task.BaseSyncOperation;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberOpenCardBusinessService;
import com.gic.member.api.dto.MemberSimpleDetailDTO;
import com.gic.member.api.dto.QywxMemberQDTO;
import com.gic.member.api.service.MemberEntranceApiService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.lang3.StringUtils;
......@@ -56,13 +57,11 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
@Autowired
private PowerService powerService;
@Autowired
private MemberOpenCardBusinessService memberOpenCardBusinessService;
@Autowired
private FriendClerkSyncNewOperation friendClerkSyncNewOperation;
@Autowired
private WxEnterpriseRelatedService wxEnterpriseRelatedService;
@Autowired
private WxEnterpriseService wxEnterpriseService;
private MemberEntranceApiService memberEntranceApiService;
private static final String TRY_AGAIN = "haoban_fresh_wx_friend_again_";
......@@ -105,6 +104,7 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
externalUserDTO.setUnionId(selfUserData.getUnionId());
externalUserDTO.setSelfExternalUserId(selfUserData.getExternalUserId());
externalUserDTO.setAvatar(selfUserData.getAvatar());
externalUserDTO.setName(selfUserData.getName());
//序列化数据
String ret = dealMerge(externalUserDTO, dataPre);
if (StringUtils.isNotBlank(ret)) {
......@@ -164,7 +164,6 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
if (externalUserDTO.getFriendType() == 2) {
return "不是微信好友,是企业微信好友:" + externalUserDTO.getFriendType();
}
//staff信息
String staffId = dataPre.getpDataId() ;
ClerkMainStoreRelatedDTO mainStore = clerkMainStoreRelatedApiService.getWxEnterpriseIdAndStaffId(wxEnterpriseId, staffId);
if (mainStore == null) {
......@@ -174,37 +173,25 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
if (staffClerkRelationDTO == null) {
return "未绑定导购";
}
//好友同一个开平
externalUserDTO.setWxEnterpriseId(wxEnterpriseId);
externalUserDTO.setEnterpriseId(staffClerkRelationDTO.getEnterpriseId());
externalUserDTO.setStoreId(mainStore.getStoreId());
externalUserDTO.setClerkId(staffClerkRelationDTO.getClerkId());
externalUserDTO.setWxUserId(wxUserId);
externalUserDTO.setStaffId(staffClerkRelationDTO.getStaffId());
TabHaobanWxEnterpriseRelated wxEnterpriseRelated = wxEnterpriseRelatedService.getByEnterpriseId(staffClerkRelationDTO.getWxEnterpriseId(), staffClerkRelationDTO.getEnterpriseId());
String enterpriseId = staffClerkRelationDTO.getEnterpriseId() ;
TabHaobanWxEnterpriseRelated wxEnterpriseRelated = wxEnterpriseRelatedService.getByEnterpriseId(wxEnterpriseId, enterpriseId);
if (wxEnterpriseRelated == null) {
logger.info("没有存在企业关联:{},{}", staffClerkRelationDTO.getWxEnterpriseId(), staffClerkRelationDTO.getEnterpriseId());
logger.info("没有存在企业关联:{},{}", wxEnterpriseId, enterpriseId);
return "没有关联企业";
}
String storeId = mainStore.getStoreId() ;
String clerkId = staffClerkRelationDTO.getClerkId() ;
externalUserDTO.setWxEnterpriseId(wxEnterpriseId);
externalUserDTO.setEnterpriseId(enterpriseId);
externalUserDTO.setStoreId(storeId);
externalUserDTO.setClerkId(clerkId);
externalUserDTO.setWxUserId(wxUserId);
externalUserDTO.setStaffId(staffId);
Integer memberOpenCardFlag = wxEnterpriseRelated.getMemberOpenCardFlag();
//好友不同开平
if (memberOpenCardFlag == 1) {
logger.info("好友不同开平,:{}", JSONObject.toJSONString(externalUserDTO));
return memberUnionidRelatedApiService.addFriendExternal(externalUserDTO);
}
if(StringUtils.isBlank(externalUserDTO.getUnionId())) {
logger.info("好友unionid不存在:{}", JSONObject.toJSONString(externalUserDTO));
return memberUnionidRelatedApiService.addFriendExternal(externalUserDTO);
}
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(wxEnterpriseId);
if (wxEnterpriseDTO == null) {
logger.info("没有存在企业关联:wxEnterpriseId:{}", wxEnterpriseId);
return "没有关联企业";
boolean addByWelcome = this.wxEnterpriseRelatedService.getAddByWelcomeFlag(wxEnterpriseRelated,externalUserDTO.getUnionId(),false) ;
if (addByWelcome) {
logger.info("好友不同开平:{}", JSONObject.toJSONString(externalUserDTO));
return memberUnionidRelatedApiService.addExternal(externalUserDTO);
}
String clerkCode = staffClerkRelationDTO.getClerkCode();
ClerkDTO clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), clerkCode);
......@@ -220,15 +207,27 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
if (StringUtils.isBlank(qrcodeParam)) {
return "导购码不存在:" + clerkCode;
}
MemberDTO member = null;
if (StringUtils.isNotBlank(qrcodeParam) && StringUtils.isNotBlank(externalUserDTO.getUnionId())) {
member = memberOpenCardBusinessService.getMemberByQywxChannelParam(staffClerkRelationDTO.getEnterpriseId(),
externalUserDTO.getUnionId(), "", externalUserDTO.getName(), externalUserDTO.getAvatar(), qrcodeParam,1);
}
if (member == null) {
QywxMemberQDTO qdto = new QywxMemberQDTO() ;
qdto.setEnterpriseId(enterpriseId);
qdto.setNick(externalUserDTO.getName());
qdto.setPhotoUrl(externalUserDTO.getAvatar());
qdto.setQrcodeParam(qrcodeParam);
qdto.setUnionId(externalUserDTO.getUnionId());
if(wxEnterpriseRelated.getWxEnterpriseType()==0) {
qdto.setUserId(externalUserDTO.getExternalUserId());
}
qdto.setSence(1);
String memberId = null;
com.gic.api.base.commons.ServiceResponse<MemberSimpleDetailDTO> resp = this.memberEntranceApiService.enterpriseWechatByFriendEntrance(qdto);
logger.info("加好友,创建member,resp={},param={}",JSON.toJSON(resp),JSON.toJSONString(qdto));
if(resp.isSuccess()) {
MemberSimpleDetailDTO member = resp.getResult() ;
memberId = member.getMemberId() ;
}
if (memberId == null) {
return "会员不存在:unionid:" + externalUserDTO.getUnionId();
}
externalUserDTO.setMemberId(member.getMemberId());
externalUserDTO.setMemberId(memberId);
return memberUnionidRelatedApiService.addExternal(externalUserDTO);
}
......
package com.gic.haoban.manage.service.util;
public enum QwInterfaceLimitEnum {
GET_PENDING_ID("qw_limit_pending_id", "unionid查询external_userid接口", 0);
private String name;
private String remark;
private int type;
private QwInterfaceLimitEnum(String name, String remark, int type) {
this.name = name;
this.remark = remark;
this.type = type;
}
public String getName() {
return name;
}
public String getRemark() {
return remark;
}
public int getType() {
return type;
}
public void setName(String name) {
this.name = name;
}
public void setRemark(String remark) {
this.remark = remark;
}
public void setType(int type) {
this.type = type;
}
}
......@@ -27,6 +27,7 @@
<dubbo:service interface="com.gic.haoban.manage.api.service.KeyDataApiService" ref="keyDataApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.hm.HmLinkApiService" ref="hmLinkApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.HaobanUserApiService" ref="haobanUserApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.QwFriendApiService" ref="qwFriendApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.ApplicationApiService" ref="applicationApiServiceImpl"
timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.TestApiService" ref="testServiceImpl" timeout="10000"/>
......@@ -46,8 +47,6 @@
timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService"
ref="memberUnionidRelatedApiServiceImpl" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.BindApiService" ref="bindApiServiceImpl"
timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.ApplicationSettingApiService"
ref="applicationSettingApiServiceImpl" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.AuditSettingApiService" ref="auditSettingApiServiceImpl"
......@@ -135,7 +134,6 @@
<dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanMenuApiService" ref="haobanMenuApiServiceImpl"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanRoleApiService" ref="haobanRoleApiServiceImpl"/>
<dubbo:reference interface="com.gic.enterprise.api.service.DepartmentService" id="gicDepartmentService"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxDepartmentApiService"
id="qywxDepartmentApiService"/>
......@@ -191,7 +189,7 @@
interface="com.gic.enterprise.api.service.StoreWidgetService" timeout="10000"
retries="0" check="false"/>
<dubbo:reference id="memberTagOpenApiService" interface="com.gic.member.tag.api.service.MemberTagOpenApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxExternalUserService" id="qywxExternalUserService"/>
<dubbo:reference interface="com.gic.marketing.api.service.SmsService" id="smsService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.marketing.api.service.AccountOverdueSmsSendService" id="accountOverdueSmsSendService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.thirdparty.api.service.VoiceService" id="voiceService" timeout="10000" retries="0"/>
......
......@@ -20,12 +20,6 @@
member_unionid_related_id, member_id, unionid, wx_enterprise_id, status_flag, external_userid,
staff_id, create_time, update_time,add_create_time,self_external_userid,external_name,enterprise_id
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from tab_haoban_member_unionid_related
where member_unionid_related_id = #{memberUnionidRelatedId,jdbcType=VARCHAR}
</select>
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.MemberUnionidRelated">
insert into tab_haoban_member_unionid_related (member_unionid_related_id, member_id,
unionid, wx_enterprise_id, status_flag,
......@@ -39,102 +33,6 @@
#{enterpriseId})
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.haoban.manage.service.entity.MemberUnionidRelated">
update tab_haoban_member_unionid_related
<set>
<if test="memberId != null">
member_id = #{memberId,jdbcType=VARCHAR},
</if>
<if test="unionid != null">
unionid = #{unionid,jdbcType=VARCHAR},
</if>
<if test="wxEnterpriseId != null">
wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR},
</if>
<if test="enterpriseId != null">
enterprise_id = #{enterpriseId,jdbcType=VARCHAR},
</if>
<if test="statusFlag != null">
status_flag = #{statusFlag,jdbcType=INTEGER},
</if>
<if test="externalUserid != null">
external_userid = #{externalUserid,jdbcType=VARCHAR},
</if>
<if test="staffId != null">
staff_id = #{staffId,jdbcType=VARCHAR},
</if>
<if test="addCreateTime != null">
add_create_time = #{addCreateTime,jdbcType=VARCHAR},
</if>
<if test="selfExternalUserid != null">
self_external_userid = #{selfExternalUserid,jdbcType=VARCHAR},
</if>
<if test="externalName != null">
external_name = #{externalName,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
update_time = now()
</set>
where member_unionid_related_id = #{memberUnionidRelatedId,jdbcType=VARCHAR}
</update>
<update id="cleanByCid">
update tab_haoban_member_unionid_related
set
status_flag = 0,
update_time=now()
where member_id is null
<if test="cid !=null">
and wx_enterprise_id = #{cid}
</if>
</update>
<select id="getByUnionId" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from tab_haoban_member_unionid_related
where staff_id = #{staffId}
and wx_enterprise_id=#{wxEnterpriseId}
and status_flag = 1
and unionid = #{unionid}
limit 1
</select>
<update id="deleteByUnionidAndUserId" parameterType="com.gic.haoban.manage.service.entity.MemberUnionidRelated">
update tab_haoban_member_unionid_related
set status_flag = 0,
update_time=now()
where external_userid = #{externalUserid,jdbcType=VARCHAR}
and staff_id = #{staffId}
</update>
<update id="delMemberUnionidRelatedBatch" parameterType="com.gic.haoban.manage.service.entity.MemberUnionidRelated">
update tab_haoban_member_unionid_related
set status_flag = 0,update_time=now()
where
wx_enterprise_id=#{wxEnterpriseId}
and staff_id = #{staffId}
and external_userid in
<foreach collection="externalUserids" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</update>
<update id="cleanStaffRelated" parameterType="com.gic.haoban.manage.service.entity.MemberUnionidRelated">
update tab_haoban_member_unionid_related
set status_flag = 0,
update_time = now()
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and staff_id in
<foreach collection="staffIds" item="id" index="index" open="(" close=")" separator=",">
#{id,jdbcType=VARCHAR}
</foreach>
and status_flag = 1
</update>
<select id="getBySelfExternalUserId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
......@@ -148,16 +46,6 @@
order by create_time desc limit 1
</select>
<select id="listBySelfExternalUserId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_member_unionid_related
where wx_enterprise_id = #{wxEnterpriseId}
and status_flag = 1
and staff_id = #{staffId}
and self_external_userid = #{selfExternalUserId}
</select>
<select id="listByWxEnterpriseIdAndExternalUserId" resultMap="BaseResultMap">
select
external_userid, self_external_userid from tab_haoban_member_unionid_related
......
......@@ -189,4 +189,15 @@
and wx_enterprise_id = #{wxEnterpriseId} and staff_id = #{staffId}
</select>
<select id="listNoDepartStaff" resultType="String">
SELECT distinct(a.staff_id) FROM `tab_haoban_staff` a LEFT JOIN `tab_haoban_staff_department_related` b ON a.`staff_id` = b.`staff_id` AND b.`status_flag` = 1
WHERE
a.create_time >= #{addDate}
<if test="null != wxEnterpriseId">
and a.wx_enterprise_id = #{wxEnterpriseId}
</if>
AND a.status_flag = 1 AND b.`staff_department_related_id` IS NULL
</select>
</mapper>
\ No newline at end of file
......@@ -28,7 +28,8 @@
</resultMap>
<sql id="Base_Column_List">
staff_id, wx_user_id, phone_number, staff_name, nation_code, nick_name, sex, postion,
staff_id
, wx_user_id, phone_number, staff_name, nation_code, nick_name, sex, postion,
active_flag, extend_postion, status_flag, create_time, update_time,wx_enterprise_id,head_img,
sort,sync_postion_flag,super_manager_flag,wx_open_user_id,wx_open_id,qr_code,add_num,active_status
</sql>
......@@ -467,13 +468,14 @@
<update id="updateAddNumById" parameterType="java.lang.String">
update tab_haoban_staff
set add_num = add_num +1,
set add_num = add_num + 1,
update_time = now()
where staff_id = #{staffId} and status_flag = 1
where staff_id = #{staffId}
and status_flag = 1
</update>
<update id="updateActiveStatusById" >
<update id="updateActiveStatusById">
update tab_haoban_staff
set active_status = #{activeStatus},
update_time = now()
......@@ -489,4 +491,29 @@
where status_flag = 1
</update>
<select id="listBindStoreIds" resultType="com.gic.haoban.manage.api.dto.StaffDTO">
select
a.staff_id staffId,
a.phone_number phoneNumber,
a.staff_name staffName,
a.head_img headImg,
a.wx_enterprise_id wxEnterpriseId,
b.clerk_id clerkId,
b.clerk_code clerkCode,
b.enterprise_id enterpriseId,
b.store_id storeId
from tab_haoban_staff a
left join tab_haoban_staff_clerk_relation b on a.staff_id = b.staff_id
where a.wx_enterprise_id = #{wxEnterpriseId}
and a.status_flag = 1 and b.status_flag = 1
<if test="null != storeIds and storeIds.size gt 0">
and b.store_id in
<foreach collection="storeIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
limit 100
</select>
</mapper>
\ No newline at end of file
......@@ -91,6 +91,9 @@
<if test="updateTime != null">
update_time,
</if>
<if test="selfExternalUserid != null">
self_external_userid,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="externalClerkRelatedId != null">
......@@ -147,6 +150,9 @@
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="selfExternalUserid != null">
#{selfExternalUserid},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective"
......@@ -211,11 +217,11 @@
and status_flag = 1
</select>
<update id="delByUserIdAndExternalUserId" parameterType="com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated" >
<update id="delByUserIdAndExternalUserId">
update tab_haoban_external_clerk_related
set status_flag = 2,
update_time = now()
where external_user_id = #{externalUserId,jdbcType=VARCHAR}
where external_user_id = #{externalUserId}
and staff_id = #{staffId}
and status_flag in (1, 3, 4)
</update>
......
......@@ -160,8 +160,11 @@
<include refid="Base_Column_List"/>
from tab_haoban_staff_clerk_relation
where status_flag=1
and store_id = #{storeId,jdbcType=VARCHAR}
and staff_id = #{staffId,jdbcType=VARCHAR}
<if test="null != storeId and storeId != ''">
and store_id = #{storeId}
</if>
order by update_time desc limit 1
</select>
......
......@@ -473,15 +473,6 @@
order by create_time desc limit 1
</select>
<select id="getEnterpriseByCorpName" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from tab_haoban_wx_enterprise
where corp_name = #{corpName} and status_flag = 1
order by create_time desc limit 1
</select>
<update id="updateExternalFlagById">
update tab_haoban_wx_enterprise
set external_flag = #{externalFlag},
......
......@@ -27,11 +27,6 @@
from tab_haoban_wx_enterprise_related
where wx_enterprise_related_id = #{wxEnterpriseRelatedId,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete
from tab_haoban_wx_enterprise_related
where wx_enterprise_related_id = #{wxEnterpriseRelatedId,jdbcType=VARCHAR}
</delete>
<update id="deleteByEnterpriseId">
update tab_haoban_wx_enterprise_related set status_flag = 0 , update_time=now() where enterprise_id=#{enterpriseId} and status_flag=1
......
......@@ -129,6 +129,11 @@
<version>${haoban-config}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>log-record-sdk</artifactId>
<version>${log-record-sdk}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
......
package com.gic.haoban.manage.web.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
......@@ -10,6 +11,7 @@ import com.gic.clerk.api.service.ClerkNewService;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.ExcelUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService;
import com.gic.enterprise.api.service.StoreWidgetService;
......@@ -407,6 +409,27 @@ public class StaffController extends WebBaseController {
}
/**
* 是否展示区经 true是
* @return
*/
@RequestMapping("hasManagerFlag")
public RestResponse hasManagerFlag() {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
List<EnterpriseDetailDTO> list = wxEnterpriseRelatedApiService.listEnterpriseByWxEnterpriseId(wxEnterpriseId);
if (CollectionUtil.isEmpty(list)) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_10010.getCode()),HaoBanErrCode.ERR_10010.getMsg());
}
List<String> enterpriseIds = list.stream().filter(dto -> {
boolean over = wxEnterpriseApiService.enterpriseIsOver(dto.getEnterpriseId());
return !over;
}).map(EnterpriseDetailDTO::getEnterpriseId).collect(Collectors.toList());
List<ClerkDTO> clerkDTOList = clerkService.listClerkEnableHaoban(enterpriseIds, null);
boolean flag = CollectionUtils.isNotEmpty(clerkDTOList);
return RestResponse.successResult(flag);
}
/**
* @return 返回值类型: <pre>
* @author 作者: qwm
* @date 时间: 2020年12月18日 上午11:11:35 <pre>
......
......@@ -56,8 +56,6 @@ public class TestController extends WebBaseController {
@Autowired
private QywxSuiteApiService qywxSuiteApiService;
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired
private TestApiService testApiService;
@Autowired
private MaidianLogApiService maidianLogApiService;
......@@ -77,8 +75,19 @@ public class TestController extends WebBaseController {
private HmQrcodeApiService hmQrcodeApiService;
@Autowired
private QywxCorpApiService qywxCorpApiService;
@Autowired
private QwFriendApiService qwFriendApiService ;
@RequestMapping("/pending-check")
public HaobanResponse pendingChec(String enterpriseId, String unionid,String openid,String wxaUnionid ,String wxaOpenid) {
return this.resultResponse(HaoBanErrCode.ERR_0,this.qwFriendApiService.pendingIdCheck(enterpriseId, unionid, openid, wxaUnionid,wxaOpenid));
}
@RequestMapping("/get-pending-times")
public HaobanResponse getTestTimes(String wxEnterpriseId) {
return this.resultResponse(HaoBanErrCode.ERR_0,this.qwFriendApiService.getCallTimes(wxEnterpriseId));
}
@RequestMapping("/send-message-test")
public HaobanResponse testSendMessage(QywxXcxSendMessageQo qo) {
......@@ -96,11 +105,6 @@ public class TestController extends WebBaseController {
}
}
@RequestMapping("/clean-out")
public HaobanResponse cleanMessage(String cid) {
memberUnionidRelatedApiService.cleanByCid(cid);
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("/test-dubbo")
public HaobanResponse dubbo(@RequestParam(defaultValue = "2000") Integer n, @RequestParam(defaultValue = "100") String t) {
......
......@@ -15,7 +15,7 @@
<dubbo:protocol name="dubbo" port="30009"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.QwFriendApiService" id="qwFriendApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.hm.WxUserAddLogApiService" id="wxUserAddLogApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.member.tag.api.service.MemberTagApiService" id="memberTagApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.clerk.api.service.PowerService" id="powerService" timeout="10000"/>
......
......@@ -558,18 +558,8 @@ public class WxEnterpriseInfoController extends WebBaseController {
if (externalUserDTO == null) {
logger.info("请先添加好友,企业微信未查询到该好友,externalUserid:{}", externalUserid);
return resultResponse(HaoBanErrCode.ERR_11126);
} else {
//是否需修复数据
String unionId = externalUserDTO.getUnionId();
ExternalClerkRelatedDTO externalClerkRelatedDTO = externalClerkRelatedApiService.getByWxEnterpriseIdAndUnionId(wxEnterpriseId, staffId, unionId);
if (externalClerkRelatedDTO != null) {
String memberUnionidRelatedId = externalClerkRelatedDTO.getMemberUnionidRelatedId();
MemberUnionidRelatedDTO memberUnionidRelatedDTO = memberUnionidRelatedApiService.getById(memberUnionidRelatedId);
if (memberUnionidRelatedDTO != null && StringUtils.isBlank(memberUnionidRelatedDTO.getSelfExternalUserid())) {
memberUnionidRelatedApiService.updateSelfExternalUseridById(externalUserid, memberUnionidRelatedId);
}
}
}
MemberUnionidRelatedDTO memberUnionidRelatedDTO = memberUnionidRelatedApiService.getBySelfExternalUserId(wxEnterpriseId, externalUserid);
if (null == memberUnionidRelatedDTO) {
logger.info("请刷新好友,wxEnterpriseId:{},传入的externalUserid:{},wxUserId:{}", wxEnterpriseId, externalUserid, wxUserId);
......
......@@ -117,27 +117,15 @@ public class WxStaffController extends WebBaseController {
if (storeIds.contains("-1")) {
storeIds = null;
}
List<StaffClerkRelationDTO> list = staffClerkRelationApiService.listByStoreIds(storeIds);
List<String> staffIds = list.stream().map(StaffClerkRelationDTO::getStaffId).collect(Collectors.toList());
List<StaffDTO> resultlist = staffApiService.listByIds(staffIds);
Map<String, StaffDTO> map = com.gic.commons.util.CollectionUtil.toMap(resultlist, "staffId");
List<StaffDTO> resultlist = staffApiService.listBindStoreIds(storeIds, wxEnterpriseId);
List<StaffVO> resultList = new ArrayList<>();
for (StaffClerkRelationDTO staffClerkRelationDTO : list) {
String staffId = staffClerkRelationDTO.getStaffId();
logger.info("员工id为:{}", staffId);
StaffDTO staffDTO = map.get(staffId);
if (staffDTO != null) {
ClerkDTO clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), staffClerkRelationDTO.getClerkCode());
if (clerk != null) {
long memberCount = distributeApiService.getClerkMemberCount(staffClerkRelationDTO.getEnterpriseId(), clerk.getClerkId(), storeId);
logger.info("【获取会员数】enterpriseId={},clerkId={},storeId={},memberCount={}", staffClerkRelationDTO.getEnterpriseId(), clerk.getClerkId(), storeId, memberCount);
for (StaffDTO staffDTO : resultlist) {
String enterpriseId = staffDTO.getEnterpriseId();
long memberCount = distributeApiService.getClerkMemberCount(enterpriseId, staffDTO.getClerkId(), storeId);
logger.info("【获取会员数】enterpriseId={},clerkId={},storeId={},memberCount={}", enterpriseId, staffDTO.getClerkId(), storeId, memberCount);
staffDTO.setMemberCount(Convert.toInt(memberCount, 0));
staffDTO.setClerkId(clerk.getClerkId());
staffDTO.setClerkCode(clerk.getClerkCode());
resultList.add(EntityUtil.changeEntityNew(StaffVO.class, staffDTO));
}
}
}
return resultResponse(HaoBanErrCode.ERR_1, resultList);
}
......@@ -331,7 +319,7 @@ public class WxStaffController extends WebBaseController {
return resultResponse(HaoBanErrCode.ERR_10009);
}
String enterpriseId = store.getEnterpriseId();
boolean b = auditApiService.judgeHavePhoneNumberOrCode(enterpriseId, clerkCode, phoneNumber,wxEnterpriseId);
boolean b = auditApiService.judgeHavePhoneNumberOrCode(enterpriseId, clerkCode, phoneNumber, wxEnterpriseId);
if (b) {
//待审核中存在code或该手机号
return resultResponse(HaoBanErrCode.ERR_10021);
......@@ -343,7 +331,7 @@ public class WxStaffController extends WebBaseController {
}
AuditSettingDTO dto = auditSettingApiService.findSettingByWxEnterpriseId(wxEnterpriseId);
if (dto.getAuditFlag() == 1 && dto.getClerkChangeFlag() == 1) {
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkCode, AuditType.CLERK_ADD.getCode(),wxEnterpriseId,enterpriseId);
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkCode, AuditType.CLERK_ADD.getCode(), wxEnterpriseId, enterpriseId);
if (auditDTO != null) {
logger.info("已经存在了审核记录,待审核{}", clerkCode);
return resultResponse(HaoBanErrCode.ERR_10018);
......@@ -431,7 +419,7 @@ public class WxStaffController extends WebBaseController {
//需要审核
String[] clerkIdArr = clerkIds.split(",");
for (String clerkId : clerkIdArr) {
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId, AuditType.CLERK_DEL.getCode(),wxEnterpriseId,store.getEnterpriseId());
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId, AuditType.CLERK_DEL.getCode(), wxEnterpriseId, store.getEnterpriseId());
if (auditDTO != null) {
logger.info("已经存在了审核记录,待审核{}", clerkId);
continue;
......@@ -853,7 +841,7 @@ public class WxStaffController extends WebBaseController {
if (staff == null) {
return resultResponse(HaoBanErrCode.ERR_10006);
}
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId, AuditType.CLERK_BIND.getCode(),wxEnterpriseId,clerk.getEnterpriseId());
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId, AuditType.CLERK_BIND.getCode(), wxEnterpriseId, clerk.getEnterpriseId());
if (auditDTO != null) {
return resultResponse(HaoBanErrCode.ERR_10018);
}
......@@ -1015,13 +1003,21 @@ public class WxStaffController extends WebBaseController {
List<BindClerkVO> bindList = new ArrayList<>();
List<BindClerkVO> unBindList = new ArrayList<>();
for (ClerkDTO dto : list) {
BindClerkVO vo = EntityUtil.changeEntityByJSON(BindClerkVO.class, dto);
BindClerkVO vo = EntityUtil.changeEntityNew(BindClerkVO.class, dto);
if (bindCodeMap.containsKey(dto.getClerkCode())) {
String staffId = bindCodeMap.get(dto.getClerkCode()).getStaffId();
StaffDTO staffDTO = staffApiService.selectById(staffId);
vo.setStaffId(staffId);
String phoneNumber = dto.getPhoneNumber();
if (StringUtils.isNotBlank(phoneNumber)) {
vo.setPhoneNumber(phoneNumber);
if (StringUtils.isNotBlank(dto.getNationcode())) {
vo.setNationCode(dto.getNationcode());
vo.setPhoneNumber(dto.getPhoneNumber());
}
}else {
vo.setPhoneNumber("");
vo.setNationCode("");
}
vo.setStaffName(staffDTO == null ? "" : staffDTO.getStaffName());
bindList.add(vo);
} else {
......
......@@ -27,7 +27,6 @@
<dubbo:reference interface="com.gic.enterprise.api.service.StoreService" id="storeService"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxCorpApiService" id="qywxCorpApiService"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxUserApiService" id="qywxUserApiService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.BindApiService" id="bindApiService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.AuditApiService" id="auditApiService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.AuditSettingApiService" id="auditSettingApiService"/>
<dubbo:reference interface="com.gic.dict.api.service.ManagerDictService" id="managerDictService"/>
......
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