企业开通相关逻辑整理

This commit is contained in:
zhangchenbiao
2023-05-30 10:53:05 +08:00
parent c95a79a114
commit 145e278d3d
56 changed files with 2019 additions and 35 deletions

View File

@@ -1,7 +1,7 @@
package com.cool.store.dao;
import com.cool.store.entity.EnterpriseDO;
import com.cool.store.mapper.EnterpriseMapper;
import com.cool.store.model.entity.EnterpriseDO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

View File

@@ -2,6 +2,7 @@ package com.cool.store.dao;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.mapper.EnterpriseUserMapper;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@@ -41,4 +42,10 @@ public class EnterpriseUserDAO {
enterpriseUserMapper.batchInsertOrUpdate(eid, result);
}
public void batchUpdateDiffUserDiffRegionIds(String enterpriseId, List<EnterpriseUserDO> enterpriseUserList) {
if(StringUtils.isBlank(enterpriseId) || CollectionUtils.isEmpty(enterpriseUserList)){
return;
}
enterpriseUserMapper.batchUpdateDiffUserDiffRegionIds(enterpriseId, enterpriseUserList);
}
}

View File

@@ -1,7 +1,7 @@
package com.cool.store.dao;
import com.cool.store.entity.LoginRecordDO;
import com.cool.store.mapper.LoginRecordMapper;
import com.cool.store.model.entity.LoginRecordDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

View File

@@ -1,7 +1,17 @@
package com.cool.store.dao;
import com.cool.store.constants.CommonConstants;
import com.cool.store.entity.RegionDO;
import com.cool.store.enums.RegionTypeEnum;
import com.cool.store.mapper.RegionMapper;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author zhangchenbiao
* @date 2023-05-19 02:59
@@ -9,4 +19,56 @@ import org.springframework.stereotype.Service;
@Service
public class RegionDAO {
@Resource
private RegionMapper regionMapper;
public List<Long> getRegionIdsBySynDingDeptIds(String eid, List<String> synDingDeptIds) {
if (CollectionUtils.isEmpty(synDingDeptIds)) {
return new ArrayList<>();
}
return regionMapper.selectRegionIdsBySynDingDeptIds(eid, synDingDeptIds);
}
public List<RegionDO> getRegionByRegionIds(String eid, List<String> regionIds) {
if(CollectionUtils.isEmpty(regionIds)){
return Collections.emptyList();
}
return regionMapper.getRegionByRegionIds(eid, regionIds);
}
public RegionDO getUnclassifiedRegionDO(String enterpriseId) {
//先查询是否存在未分组区域
RegionDO unclassified = regionMapper.getUnclassifiedRegionDO(enterpriseId, CommonConstants.UNGROUPED_DEPT_NAME);
if (Objects.isNull(unclassified)) {
RegionDO regionDO = new RegionDO();
regionDO.setId(CommonConstants.UNGROUPED_DEPT_ID);
regionDO.setParentId(CommonConstants.ROOT_DEPT_ID_STR);
regionDO.setName(CommonConstants.UNGROUPED_DEPT_NAME);
regionDO.setRegionType(RegionTypeEnum.PATH.getType());
regionDO.setCreateName(CommonConstants.SYSTEM_USER_ID);
regionDO.setCreateTime(Calendar.getInstance().getTimeInMillis());
regionDO.setRegionPath("/" + CommonConstants.ROOT_DEPT_ID_STR + "/");
regionDO.setUnclassifiedFlag(CommonConstants.ONE);
insertRoot(enterpriseId, regionDO);
regionDO.setRegionId(regionDO.getId().toString());
return regionDO;
}
return unclassified;
}
public Long insertRoot(String eid, RegionDO regionDO) {
return regionMapper.insertRoot(eid, regionDO);
}
public void batchInsertRegions(List<RegionDO> regionDOList, String eid){
regionMapper.batchInsertRegionsByDepartments(eid, regionDOList);
}
public Map<String,Long> getRegionSynDeptIdAndIdMapping(String eid, List<String> syncDeptIds){
List<RegionDO> regionDOS = regionMapper.selectRegionBySynDingDeptIds(eid, syncDeptIds);
return ListUtils.emptyIfNull(regionDOS)
.stream()
.collect(Collectors.toMap(RegionDO::getSynDingDeptId, RegionDO::getId, (r, e) -> r));
}
}

View File

@@ -1,7 +1,16 @@
package com.cool.store.dao;
import com.cool.store.dto.enterprise.QueryDeptChildDTO;
import com.cool.store.entity.SysDepartmentDO;
import com.cool.store.mapper.SysDepartmentMapper;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author zhangchenbiao
* @date 2023-05-19 03:00
@@ -9,4 +18,21 @@ import org.springframework.stereotype.Service;
@Service
public class SysDepartmentDAO {
@Resource
private SysDepartmentMapper sysDepartmentMapper;
public void batchInsertOrUpdate(String enterpriseId, List<SysDepartmentDO> deptList){
if(StringUtils.isBlank(enterpriseId) || CollectionUtils.isEmpty(deptList)){
return;
}
sysDepartmentMapper.batchInsertOrUpdate(deptList, enterpriseId);
}
public List<QueryDeptChildDTO> getDeptChildListByParentId(String eid, String parentId){
if(StringUtils.isAnyBlank(eid, parentId)){
return Lists.newArrayList();
}
return sysDepartmentMapper.getDeptChildListByParentId(eid, parentId);
}
}

View File

@@ -1,7 +1,16 @@
package com.cool.store.dao;
import com.cool.store.entity.UserRegionMappingDO;
import com.cool.store.mapper.UserRegionMappingMapper;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author zhangchenbiao
* @date 2023-05-19 03:00
@@ -9,4 +18,36 @@ import org.springframework.stereotype.Service;
@Service
public class UserRegionMappingDAO {
@Resource
private UserRegionMappingMapper userRegionMappingMapper;
public void deletedByUserIds(String enterpriseId, List<String> userIds){
if (CollectionUtils.isEmpty(userIds)) {
return;
}
List<String> distinctData = userIds.stream()
.distinct()
.collect(Collectors.toList());
userRegionMappingMapper.deletedByUserIds(enterpriseId, distinctData);
}
public void batchInsertRegionMapping(String enterpriseId, List<UserRegionMappingDO> userRegionMappingDOS){
if (CollectionUtils.isEmpty(userRegionMappingDOS)) {
return;
}
List<UserRegionMappingDO> distinctData = userRegionMappingDOS.stream()
.distinct()
.collect(Collectors.toList());
userRegionMappingMapper.batchInsertRegionMapping(enterpriseId, distinctData);
}
public List<UserRegionMappingDO> listUserRegionMappingByUserId(String enterpriseId, List<String> userIds){
if(StringUtils.isBlank(enterpriseId) || CollectionUtils.isEmpty(userIds)){
return Lists.newArrayList();
}
return userRegionMappingMapper.listUserRegionMappingByUserId(enterpriseId, userIds);
}
}

View File

@@ -1,6 +1,6 @@
package com.cool.store.mapper;
import com.cool.store.model.entity.EnterpriseDO;
import com.cool.store.entity.EnterpriseDO;
import org.apache.ibatis.annotations.Param;
/**

View File

@@ -40,4 +40,12 @@ public interface EnterpriseUserMapper {
*/
void batchInsertOrUpdate(@Param("enterpriseId") String enterpriseId, @Param("list") List<EnterpriseUserDO> users);
/**
* 批量更新不同用户 不同的userRegionids
* @param eid
* @param enterpriseUserDOList
* @return
*/
Boolean batchUpdateDiffUserDiffRegionIds(@Param("eid") String eid, @Param("list") List<EnterpriseUserDO> enterpriseUserDOList);
}

View File

@@ -1,6 +1,6 @@
package com.cool.store.mapper;
import com.cool.store.model.entity.LoginRecordDO;
import com.cool.store.entity.LoginRecordDO;
import org.apache.ibatis.annotations.Param;
/**

View File

@@ -3,6 +3,8 @@ package com.cool.store.mapper;
import com.cool.store.entity.RegionDO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author zhangchenbiao
* @date 2023-05-19 02:59
@@ -22,4 +24,17 @@ public interface RegionMapper {
* dateTime:2023-05-19 02:59
*/
int updateByPrimaryKeySelective(@Param("record") RegionDO record, @Param("enterpriseId") String enterpriseId);
List<Long> selectRegionIdsBySynDingDeptIds(@Param("eid") String eid, @Param("synDingDeptIds") List<String> synDingDeptIds);
List<RegionDO> getRegionByRegionIds(@Param("eid") String eid, @Param("regionIds") List<String> regionIds);
RegionDO getUnclassifiedRegionDO(@Param("enterpriseId") String enterpriseId, @Param("name")String name);
Long insertRoot(@Param("eid") String eid, @Param("region") RegionDO regionDO);
Integer batchInsertRegionsByDepartments(@Param("eid") String eid, @Param("regions") List<RegionDO> regions);
List<RegionDO> selectRegionBySynDingDeptIds(@Param("eid") String eid, @Param("synDingDeptIds") List<String> synDingDeptIds);
}

View File

@@ -1,8 +1,11 @@
package com.cool.store.mapper;
import com.cool.store.dto.enterprise.QueryDeptChildDTO;
import com.cool.store.entity.SysDepartmentDO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author zhangchenbiao
* @date 2023-05-19 03:00
@@ -22,4 +25,8 @@ public interface SysDepartmentMapper {
* dateTime:2023-05-19 03:00
*/
int updateByPrimaryKeySelective(@Param("record") SysDepartmentDO record, @Param("enterpriseId") String enterpriseId);
void batchInsertOrUpdate(@Param("list") List<SysDepartmentDO> sysDepartmentDOList, @Param("eid") String eid);
List<QueryDeptChildDTO> getDeptChildListByParentId(@Param("eid") String eid, @Param("parentId") String parentId);
}

View File

@@ -3,6 +3,8 @@ package com.cool.store.mapper;
import com.cool.store.entity.UserRegionMappingDO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author zhangchenbiao
* @date 2023-05-19 03:00
@@ -22,4 +24,10 @@ public interface UserRegionMappingMapper {
* dateTime:2023-05-19 03:00
*/
int updateByPrimaryKeySelective(@Param("record") UserRegionMappingDO record, @Param("enterpriseId") String enterpriseId);
void batchInsertRegionMapping(@Param("enterpriseId") String enterpriseId,@Param("userRegionMappingDOS") List<UserRegionMappingDO> userRegionMappingDOS);
void deletedByUserIds(@Param("enterpriseId") String enterpriseId,@Param("userIds") List<String> userIds);
List<UserRegionMappingDO> listUserRegionMappingByUserId(@Param("enterpriseId") String enterpriseId, @Param("userIds") List<String> userIds);
}

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cool.store.mapper.EnterpriseMapper">
<resultMap id="BaseResultMap" type="com.cool.store.model.entity.EnterpriseDO">
<resultMap id="BaseResultMap" type="com.cool.store.entity.EnterpriseDO">
<id column="id" jdbcType="VARCHAR" property="id"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="original_name" jdbcType="VARCHAR" property="originalName"/>

View File

@@ -467,4 +467,17 @@
roles=values(roles),
jobnumber=values(jobnumber)
</insert>
<update id="batchUpdateDiffUserDiffRegionIds">
update enterprise_user_${eid}
set user_region_ids =
<foreach collection="list" item="item" index="index" separator=" " open="case user_id" close="end">
when #{item.userId} then #{item.userRegionIds}
</foreach>
where user_id in
<foreach collection="list" item="item" index="index" separator="," open="(" close=")">
#{item.userId}
</foreach>
</update>
</mapper>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cool.store.mapper.LoginRecordMapper">
<resultMap id="BaseResultMap" type="com.cool.store.model.entity.LoginRecordDO">
<resultMap id="BaseResultMap" type="com.cool.store.entity.LoginRecordDO">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="user_id" jdbcType="VARCHAR" property="userId" />
<result column="create_time" jdbcType="BIGINT" property="createTime" />

View File

@@ -202,4 +202,142 @@
</set>
where id = #{record.id}
</update>
<select id="selectRegionIdsBySynDingDeptIds" resultType="java.lang.Long">
select
id
from region_${eid}
where
deleted = 0 and syn_ding_dept_id in
<foreach collection="synDingDeptIds" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<select id="getRegionByRegionIds" resultMap="BaseResultMap">
select
id ,
id as regionId,
name ,
parent_id as parentId,
group_id as groupId,
create_time as createTime,
create_name as createName,
syn_ding_dept_id as synDingDeptId,
update_time as updateTime,
update_name as updateName,
region_path as regionPath,
store_num as storeNum,
store_id as storeId,
region_type as regionType
from region_${eid} where id in
<foreach collection="regionIds" index="index" item="regionId"
separator="," open="(" close=")">
#{regionId, jdbcType=BIGINT}
</foreach>
and deleted = 0
</select>
<select id="getUnclassifiedRegionDO" resultMap="BaseResultMap">
select
id ,
id as regionId,
name as name ,
parent_id as parentId,
group_id as groupId,
create_time as createTime,
create_name as createName,
update_time as updateTime,
update_name as updateName,
vds_group_corp_id as vdsGroupCorpId,
syn_ding_dept_id as synDingDeptId,
region_type as regionType,
deleted as deleted,
region_path as regionPath,
store_num as storeNum,
unclassified_flag as unclassifiedFlag
from region_${enterpriseId}
where deleted = 0 and unclassified_flag = 1
and (name = #{name} or id = 1) limit 1
</select>
<insert id="insertRoot">
insert ignore into region_${eid}
(
id,
region_id,
name,
parent_id,
group_id,
create_time,
syn_ding_dept_id,
create_name,
region_type,
region_path,
store_num,
unclassified_flag)
values
(
#{region.id, jdbcType=BIGINT},
#{region.regionId, jdbcType=VARCHAR},
#{region.name, jdbcType=VARCHAR},
#{region.parentId, jdbcType=VARCHAR},
#{region.groupId, jdbcType=VARCHAR},
#{region.createTime, jdbcType=BIGINT},
#{region.synDingDeptId, jdbcType=VARCHAR},
#{region.createName, jdbcType=VARCHAR},
#{region.regionType, jdbcType=VARCHAR},
#{region.regionPath},
#{region.storeNum},
#{region.unclassifiedFlag}
)
</insert>
<insert id="batchInsertRegionsByDepartments">
insert into region_${eid}
(
id,
name,
parent_id,
group_id,
create_time,
syn_ding_dept_id,
region_path,
region_type,
order_num,
create_name,
store_id
)
values
<foreach collection="regions" item="region" separator=",">
(
#{region.id},
#{region.name},
#{region.parentId},
#{region.groupId},
#{region.createTime},
#{region.synDingDeptId},
#{region.regionPath},
#{region.regionType},
#{region.orderNum},
#{region.createName},
#{region.storeId}
)
</foreach>
ON DUPLICATE KEY UPDATE
name=values(name), parent_id=values(parent_id), region_path=values(region_path),region_type=values(region_type),order_num=values(order_num)
</insert>
<select id="selectRegionBySynDingDeptIds" resultMap="BaseResultMap">
select
id,
syn_ding_dept_id
from region_${eid}
where deleted = 0 and syn_ding_dept_id in (
<foreach collection="synDingDeptIds" item="item" separator=",">
#{item}
</foreach>
)
</select>
</mapper>

View File

@@ -197,4 +197,36 @@
</set>
where id = #{record.id}
</update>
<insert id="batchInsertOrUpdate" parameterType="java.util.List">
insert into sys_department_${eid}
(
id,
name,
parent_id,
depart_order,
auto_add_user
) values
<foreach collection="list" item="it" separator=",">
(
#{it.id, jdbcType=BIGINT},
#{it.name, jdbcType=VARCHAR},
#{it.parentId, jdbcType=BIGINT},
#{it.departOrder, jdbcType=INTEGER},
#{it.autoAddUser, jdbcType=BOOLEAN}
)
</foreach>
ON DUPLICATE KEY UPDATE name=values(name), parent_id=values(parent_id)
</insert>
<select id="getDeptChildListByParentId"
resultType="com.cool.store.dto.enterprise.QueryDeptChildDTO">
select
id,
name,
depart_order as departOrder,
parent_id as parentId
from sys_department_${eid}
where parent_id = #{parentId}
</select>
</mapper>

View File

@@ -80,4 +80,46 @@
</set>
where id = #{record.id}
</update>
<delete id="deletedByUserIds">
delete from user_region_mapping_${enterpriseId} where user_id in
<foreach collection="userIds" open="(" close=")" separator="," item="userId">
#{userId}
</foreach>
</delete>
<insert id="batchInsertRegionMapping">
insert into user_region_mapping_${enterpriseId}
(
region_id,
user_id,
create_time,
update_time,
create_id,
update_id
)
values
<foreach collection="userRegionMappingDOS" item="entity" separator=",">
(
#{entity.regionId},
#{entity.userId},
#{entity.createTime},
#{entity.updateTime},
#{entity.createId},
#{entity.updateId}
)
</foreach>
</insert>
<select id="listUserRegionMappingByUserId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user_region_mapping_${enterpriseId}
<if test="userIds !=null and userIds.size >0">
where user_id in
<foreach collection="userIds" open="(" close=")" separator="," item="userId">
#{userId}
</foreach>
</if>
</select>
</mapper>