Commit 14b4d0f7 by 墨竹

Merge branch 'feature-haoban-role' into developer

# Conflicts:
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
parents 67737baf 3710dbe3
......@@ -27,6 +27,8 @@ public interface HmClerkRelationApiService {
* @date 2022-07-22 15:14:51
*/
ServiceResponse delByClerkId(String clerkId,String enterpriseId,String wxEnterpriseId,Integer invokingType);
ServiceResponse delByClerkId(String clerkId,String enterpriseId,String wxEnterpriseId,Integer invokingType , String newClerkId);
/**
* 根据导购信息获取hmid
......
......@@ -5,6 +5,8 @@ import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.manage.api.dto.qdto.role.HaobanRoleQDTO;
import com.gic.haoban.manage.api.dto.role.HaobanRoleDTO;
import java.util.List;
/**
* @author xuwenqian
* @date 2022/9/7 9:46 上午
......@@ -58,4 +60,18 @@ public interface HaobanRoleApiService {
* @return {@link ServiceResponse}
*/
ServiceResponse addHaobanRoleInit(String wxEnterpriseId);
/**
* 查询新增的菜单
*
* @param wxEnterpriseId
* @param clerkType
* @param systemFlag
* @param menuCodes
* @return {@link ServiceResponse }<{@link List }<{@link String }>>
* @author mozhu
* @date 2022-10-09 14:16:12
*/
ServiceResponse<List<String>> getMenuNotInMenuCodes(String wxEnterpriseId,Integer clerkType,Integer systemFlag,List<String> menuCodes);
}
......@@ -369,11 +369,12 @@ public interface TabHaobanExternalClerkRelatedMapper {
*/
List<String> getByStoreIdAndStaffId(@Param("storeId") String storeId,
@Param("staffId") String staffId);
List<String> listMemberAndClerk(@Param("memberIdList")List<String> memberIdList, @Param("clerkIdList")List<String> clerkIdList, @Param("enterpriseId")String enterpriseId);
int getCountExternalClerk(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("staffId") String staffId,
@Param("statusFlags") List<Integer> statusFlags);
List<String> listMemberAndClerk(@Param("memberIdList") List<String> memberIdList, @Param("clerkIdList") List<String> clerkIdList, @Param("enterpriseId") String enterpriseId);
int getCountByMemberId(@Param("memberId") String memberId);
}
\ No newline at end of file
......@@ -84,5 +84,9 @@ public interface TabHaobanRoleMenuMapper {
* @date 2022-09-14 10:40:18
*/
boolean deleteByWxEnterpriseId(@Param("wxEnterpriseId") String wxEnterpriseId);
List<String> getMenuNotInMenuCodes(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("roleId") Long roleId,
@Param("menuCodes") List<String> menuCodes);
}
......@@ -21,6 +21,8 @@ public interface StaffClerkRelationService {
* @return
*/
boolean delBind(String clerkId, String optStaffId, int channelCode);
boolean delBind(String clerkId, String optStaffId, int channelCode , String newClerkId);
/**
* 解绑-删除绑定(门店级别)
......
......@@ -78,14 +78,18 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
}
@Override
public boolean delBind(String clerkId, String optStaffId, int channelCode) {
TabHaobanStaffClerkRelation clerkRelation = mapper.getByClerkId(clerkId);
public boolean delBind(String oldClerkId, String optStaffId, int channelCode) {
return this.delBind(oldClerkId, optStaffId, channelCode, null) ;
}
@Override
public boolean delBind(String oldClerkId, String optStaffId, int channelCode, String newClerkId) {
TabHaobanStaffClerkRelation clerkRelation = mapper.getByClerkId(oldClerkId);
if (null == clerkRelation) {
logger.info("已经不存在:{},{}", clerkId, optStaffId);
logger.info("老的绑定关联不存在,clerkId={}", oldClerkId);
return true;
}
int i = mapper.changeStatusByClerkId(clerkId, 0);
int i = mapper.changeStatusByClerkId(oldClerkId, 0);
String enterpriseId = clerkRelation.getEnterpriseId();
List<String> memberIds = externalClerkRelatedService.getByStoreIdAndStaffId(clerkRelation.getStoreId(), clerkRelation.getStaffId());
//删除 并设置主门店
......@@ -93,7 +97,7 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
//推入日志
staffClerkBindLogService.pushToMq(clerkRelation.getStaffId(), optStaffId, BindTypeEnum.UNBIND.getVal(), channelCode, clerkRelation.getStaffClerkRelationId());
//废弃活码
hmClerkRelationApiService.delByClerkId(clerkId, enterpriseId, clerkRelation.getWxEnterpriseId(), channelCode);
hmClerkRelationApiService.delByClerkId(oldClerkId, enterpriseId, clerkRelation.getWxEnterpriseId(), channelCode, newClerkId);
delMemberQywxFlag(enterpriseId, memberIds);
return i > 0;
......
......@@ -522,6 +522,10 @@ public class StaffApiServiceImpl implements StaffApiService {
@Override
public List<String> listUnBindClerk(String storeId) {
if (StringUtils.isBlank(storeId)) {
logger.error("门店id为空");
return Collections.emptyList();
}
List<String> storeIds = new ArrayList<String>();
storeIds.add(storeId);
List<String> clerkList = clerkService.getclerkListByStoreIds(storeIds);
......
......@@ -162,23 +162,26 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
@Override
public ServiceResponse bindStaffClerk(StaffClerkRelationDTO staffClerkRelationDTO, String optStaffId, int channelCode) {
logger.info("绑定clerk:{}", JSONObject.toJSONString(staffClerkRelationDTO));
StaffClerkRelationDTO relationDTO = staffClerkRelationService.getBindByClerkId(staffClerkRelationDTO.getClerkId(), staffClerkRelationDTO.getWxEnterpriseId());
logger.info("开始绑定clerk:{}", JSONObject.toJSONString(staffClerkRelationDTO));
String clerkId = staffClerkRelationDTO.getClerkId() ;
String wxEnterpriseId = staffClerkRelationDTO.getWxEnterpriseId() ;
String staffId = staffClerkRelationDTO.getStaffId() ;
StaffClerkRelationDTO relationDTO = staffClerkRelationService.getBindByClerkId(clerkId, wxEnterpriseId);
if (null != relationDTO) {
return ServiceResponse.failure("2", "已经被绑定,不能绑定");
}
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(staffClerkRelationDTO.getClerkId(), AuditType.CLERK_BIND.getCode());
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId, AuditType.CLERK_BIND.getCode());
if (null != auditDTO) {
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(staffClerkRelationDTO.getStaffId())) {
if (staffIds.contains(staffId)) {
return ServiceResponse.failure("5", "该成员已经已经在该门店下申请了绑定,请审核处理后再绑定");
}
}
StaffClerkRelationDTO storeHasBind = staffClerkRelationService.getOneBindByStoreId(staffClerkRelationDTO.getStaffId(), staffClerkRelationDTO.getStoreId());
StaffClerkRelationDTO storeHasBind = staffClerkRelationService.getOneBindByStoreId(staffId, staffClerkRelationDTO.getStoreId());
if (storeHasBind != null) {
return ServiceResponse.failure("3", "该导购已在该门店下有其它成员绑定");
}
......@@ -189,7 +192,6 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
return serviceResponse;
}
}
String relationId = staffClerkRelationService.bind(staffClerkRelationDTO, optStaffId, channelCode);
return ServiceResponse.success(relationId);
}
......@@ -439,7 +441,7 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
@Override
public void clerkStoreMoveDel(String param) {
logger.info("导购转移删除修改:{}", param);
logger.info("导购转移删除修改通知:{}", param);
if (StringUtils.isBlank(param)) {
logger.error("参数为空");
return;
......@@ -447,26 +449,28 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
ClerkSyncQDTO clerkSyncQDTO = JSON.parseObject(param, ClerkSyncQDTO.class);
Integer type = clerkSyncQDTO.getType();
String clerkId = clerkSyncQDTO.getClerkId();
String clerkCode = clerkSyncQDTO.getClerkCode() ;
String enterpriseId = clerkSyncQDTO.getEnterpriseId();
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId, -1);
if (clerkDTO == null) {
logger.error("导购为空");
logger.error("导购为空,clerkId={}",clerkId);
return;
}
if (type == 1) {
Integer status = clerkDTO.getStatus();
logger.info("导购删除解绑,clerkId:{},status:{}", clerkId, status);
//导购删除解绑
logger.info("导购删除,clerkId:{},status:{}", clerkId, status);
if (!status.equals(1)) {
//解绑
staffClerkRelationService.delBind(clerkId, "-1", ChannelCodeEnum.GIC_CLERK_DEL_UNBIND.getCode());
}
} else if (type == 2) {
logger.info("门店转移、重新绑定,clerkId:{}", clerkId);
//门店转移、重新绑定
StaffClerkRelationDTO relationDTO = staffClerkRelationService.getOneBindCodeNoStatus(clerkDTO.getEnterpriseId(), clerkDTO.getClerkCode());
moveOrAddClerk(clerkSyncQDTO, relationDTO);
logger.info("导购门店转移,新的导购和门店,clerkId={},storeId={}", clerkId,clerkSyncQDTO.getStoreId());
StaffClerkRelationDTO oldRelationDTO = staffClerkRelationService.getOneBindCodeNoStatus(enterpriseId, clerkCode);
if (null == oldRelationDTO) {
logger.info("导购未关联成员,clerkCode={}",clerkCode);
return;
}
logger.info("导购门店转移,老的绑定导购id={}", oldRelationDTO.getClerkId());
this.moveOrAddClerk(clerkSyncQDTO, oldRelationDTO);
} else if (type == 3) {
//店长任务重新分配
Integer clerkType = clerkDTO.getClerkType();
......@@ -499,17 +503,14 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
}
private void moveOrAddClerk(ClerkSyncQDTO clerkSyncQDTO, StaffClerkRelationDTO relationDTO) {
if (null == relationDTO) {
logger.info("没有关联导购,不需要新增");
return;
}
private void moveOrAddClerk(ClerkSyncQDTO clerkSyncQDTO, StaffClerkRelationDTO oldRelationDTO) {
//正常的时候
staffClerkRelationService.delBind(relationDTO.getClerkId(), "-1", ChannelCodeEnum.SYNC_UNBIND.getCode());
relationDTO.setClerkId(clerkSyncQDTO.getClerkId());
relationDTO.setStoreId(clerkSyncQDTO.getStoreId());
ServiceResponse response = bindStaffClerk(relationDTO, "-1", ChannelCodeEnum.SYNC_BIND.getCode());
logger.info("绑定结果正常:{},{}", JSONObject.toJSONString(response), relationDTO.getClerkId());
String oldClerkId = oldRelationDTO.getClerkId() ;
this.staffClerkRelationService.delBind(oldClerkId, "-1", ChannelCodeEnum.SYNC_UNBIND.getCode(),clerkSyncQDTO.getClerkId());
oldRelationDTO.setClerkId(clerkSyncQDTO.getClerkId());
oldRelationDTO.setStoreId(clerkSyncQDTO.getStoreId());
ServiceResponse response = this.bindStaffClerk(oldRelationDTO, "-1", ChannelCodeEnum.SYNC_BIND.getCode());
logger.info("绑定结果正常:{},{}", JSONObject.toJSONString(response), oldRelationDTO.getClerkId());
}
@Override
......
......@@ -36,6 +36,12 @@ public class HmClerkRelationApiServiceImpl implements HmClerkRelationApiService
@Override
public ServiceResponse delByClerkId(String clerkId, String enterpriseId, String wxEnterpriseId, Integer invokingType) {
return this.delByClerkId(clerkId, enterpriseId, wxEnterpriseId, invokingType, null) ;
}
@Override
public ServiceResponse delByClerkId(String clerkId, String enterpriseId, String wxEnterpriseId,
Integer invokingType, String newClerkId) {
// 单人活码 直接废弃,多人活码,更新
HmQrcodeBO hmQrcodeBO = hmQrcodeService.queryByClerkId(clerkId, wxEnterpriseId);
if (hmQrcodeBO != null) {
......
......@@ -248,6 +248,16 @@ public class HaobanRoleApiServiceImpl implements HaobanRoleApiService {
}
@Override
public ServiceResponse<List<String>> getMenuNotInMenuCodes(String wxEnterpriseId, Integer clerkType, Integer systemFlag, List<String> menuCodes) {
HaobanRoleBO haobanRoleBO = haobanRoleService.getByWxEnterpriseIdAndClerkType(wxEnterpriseId, clerkType, systemFlag);
if (haobanRoleBO == null) {
return ServiceResponse.success();
}
List<String> menuNotInMenuCodes = haobanRoleMenuService.getMenuNotInMenuCodes(wxEnterpriseId, haobanRoleBO.getRoleId(), menuCodes);
return ServiceResponse.success(menuNotInMenuCodes);
}
@Override
public ServiceResponse addHaobanRoleInit(String wxEnterpriseId) {
List<TabHaobanWxEnterpriseRelated> enterpriseRelateds = wxEnterpriseRelatedService.getByWxEnterpriseId(wxEnterpriseId);
//全品牌搜索
......
......@@ -85,4 +85,17 @@ public interface HaobanRoleMenuService {
* @date 2022-09-14 10:39:43
*/
boolean deleteByWxEnterpriseId(String wxEnterpriseId);
/**
* 菜单没有菜单代码
*
* @param wxEnterpriseId wx企业标识
* @param roleId 角色id
* @param menuCodes 菜单代码
* @return {@link List }<{@link String }>
* @author mozhu
* @date 2022-10-09 14:20:25
*/
List<String> getMenuNotInMenuCodes(String wxEnterpriseId, Long roleId, List<String> menuCodes);
}
......@@ -90,4 +90,9 @@ public class HaobanRoleMenuServiceImpl implements HaobanRoleMenuService {
public boolean deleteByWxEnterpriseId(String wxEnterpriseId) {
return tabHaobanRoleMenuMapper.deleteByWxEnterpriseId(wxEnterpriseId);
}
@Override
public List<String> getMenuNotInMenuCodes(String wxEnterpriseId, Long roleId, List<String> menuCodes) {
return tabHaobanRoleMenuMapper.getMenuNotInMenuCodes(wxEnterpriseId,roleId,menuCodes);
}
}
......@@ -88,5 +88,17 @@
delete from tab_haoban_role_menu where wx_enterprise_id = #{wxEnterpriseId}
</delete>
<select id="getMenuNotInMenuCodes" resultType="java.lang.String">
select
menu_code
from tab_haoban_role_menu
where wx_enterprise_id = #{wxEnterpriseId} and role_id = #{roleId}
and menu_code not in
<foreach collection="menuCodes" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</select>
</mapper>
......@@ -6,7 +6,6 @@ import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.anno.IgnoreLogin;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.common.utils.RolesListUtils;
import com.gic.haoban.manage.api.dto.qdto.role.HaobanMenuQDTO;
import com.gic.haoban.manage.api.dto.qdto.role.HaobanRoleMenuQDTO;
import com.gic.haoban.manage.api.dto.qdto.role.HaobanRoleQDTO;
......@@ -62,8 +61,8 @@ public class HaobanRoleController extends WebBaseController {
public RestResponse edit(@RequestBody HaobanRoleQDTO haobanRoleQDTO) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
StringBuffer stringBuffer = getEditLog(haobanRoleQDTO, login);
ServiceResponse serviceResponse = haobanRoleApiService.edit(haobanRoleQDTO, login);
ServiceResponse serviceResponse = haobanRoleApiService.edit(haobanRoleQDTO, login);
if (!serviceResponse.isSuccess()) {
GicLogRecordEvaluationContext.noWriteLog();
}
......@@ -102,18 +101,20 @@ public class HaobanRoleController extends WebBaseController {
}
private void setEditLogByType(String wxEnterpriseId, StringBuffer stringBuffer, Integer clerkType, List<String> menuCodes, List<String> delMenuCodes) {
ServiceResponse<HaobanRoleDTO> haobanRoleDTOServiceResponse = haobanRoleApiService.getMenuByWxEnterpriseIdAndClerkType(wxEnterpriseId, clerkType, 1);
HaobanRoleDTO haobanRoleDTO = haobanRoleDTOServiceResponse.getResult();
if (haobanRoleDTO != null) {
List<String> oldMenuCodes = haobanRoleDTO.getMenuCodes();
//新勾选的
List<String> differenceCodesList = RolesListUtils.differenceList(oldMenuCodes, menuCodes);
for (String menuCode : differenceCodesList) {
ServiceResponse<List<String>> menuNotInMenuCodes = haobanRoleApiService.getMenuNotInMenuCodes(wxEnterpriseId, clerkType, 1, menuCodes);
//新勾选的
List<String> newMenuCodes = menuNotInMenuCodes.getResult();
if (CollectionUtils.isNotEmpty(newMenuCodes)) {
for (String menuCode : newMenuCodes) {
ServiceResponse<String> serviceMenuNameByCode = haobanMenuApiService.getMenuNameByCode(menuCode);
String menuName = serviceMenuNameByCode.getResult();
String log = RoleClerkTypeEnum.getNameByCode(clerkType) + "/" + menuName + "/" + "勾选" + "\r\n";
stringBuffer.append(log);
}
}
if (CollectionUtils.isNotEmpty(delMenuCodes)) {
//删除勾选的
for (String menuCode : delMenuCodes) {
ServiceResponse<String> serviceMenuNameByCode = haobanMenuApiService.getMenuNameByCode(menuCode);
String menuName = serviceMenuNameByCode.getResult();
......
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