diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/Role.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/Role.java new file mode 100644 index 000000000..8de661ab7 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/Role.java @@ -0,0 +1,116 @@ +package com.cool.store.enums; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +public enum Role { + + /** + * 管理员 + */ + MASTER("20000000", "管理员", 1,"master"), + /** + * 子管理员 + */ + SUB_MASTER("80000000", "子管理员", 2,"sub_master"), + /** + * 普通员工 + */ + EMPLOYEE("30000000", "未分配", 99999999,"employee"), + /** + * 部门负责人 + */ + DEPT_LEADER("40000000", "部门负责人", 10,"dept_leader"), + /** + * 店长 + */ + SHOPOWNER("50000000", "店长", 3,"shopowner"), + /** + * 运营 + */ + OPERATOR("60000000", "运营", 4,"operator"), + /** + * 店员 + */ + CLERK("70000000", "店员", 5,"clerk"), + + MYSTERIOUS_GUEST("90000000", "神秘访客", 6,"mysterious_guest"); + + + private static final Map MAP = Arrays.stream(values()).collect( + Collectors.toMap(Role::getRoleEnum, Function.identity())); + + private static final Map ROLE_ID_MAP = Arrays.stream(values()).collect( + Collectors.toMap(Role::getId, Function.identity())); + + private String id; + private String name; + @Getter + @Setter + private Integer priority; + + private String roleEnum; + + + Role(String id, String name, Integer priority, String roleEnum) { + this.id = id; + this.name = name; + this.priority = priority; + this.roleEnum=roleEnum; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public String getRoleEnum() { + return roleEnum; + } + + public static Role getByCode(String code) { + return MAP.get(code); + } + + /** + * 是否是管理员 及 子管理员 + * @param code + * @return + */ + public static boolean isAdmin(String code){ + if(MASTER.getRoleEnum().equals(code) || SUB_MASTER.getRoleEnum().equals(code)){ + return true; + } + return false; + } + + /** + * 根据id 判断 是否是管理员 及 子管理员 + * @param id + * @return + */ + public static boolean isAdminById(String id){ + if(MASTER.getId().equals(id) || SUB_MASTER.getId().equals(id)){ + return true; + } + return false; + } + + /** + * 是否包含角色id + * @param roleId + * @return + */ + public static boolean isContainsRoleId(String roleId){ + return ROLE_ID_MAP.containsKey(roleId); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java new file mode 100644 index 000000000..0fd4a71ea --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java @@ -0,0 +1,115 @@ +package com.cool.store.dao; + +import com.cool.store.constants.CommonConstants; +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.mapper.EnterpriseUserMapper; +import com.cool.store.utils.StringUtil; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author zhangchenbiao + * @date 2023-05-19 02:58 + */ +@Repository +public class EnterpriseUserDAO { + + @Resource + private EnterpriseUserMapper enterpriseUserMapper; + + + public EnterpriseUserDO getUserInfoById(String userId){ + if(StringUtils.isAnyBlank(userId)){ + return null; + } + return enterpriseUserMapper.getUserInfoById( userId); + } + + public List getUserInfoByUserIds(List userIdList){ + if(CollectionUtils.isEmpty(userIdList)){ + return Lists.newArrayList(); + } + return enterpriseUserMapper.getUserInfoByUserIds( userIdList); + } + + public List searchUserByRegionIdsAndKeyword(List regionIds, String keyword, List leaderRegionIds){ + if(CollectionUtils.isEmpty(regionIds)){ + return Lists.newArrayList(); + } + return enterpriseUserMapper.searchUserByRegionIdsAndKeyword( regionIds, keyword, leaderRegionIds); + } + + public boolean isExistDeptUser(String regionId){ + if(StringUtils.isBlank(regionId)){ + return false; + } + return enterpriseUserMapper.getUserCountByRegionId( regionId) > CommonConstants.ZERO; + } + + /** + * 获取部门负责人 + * @param regionId + * @return + */ + public List getUserListByDeptLeader(String regionId){ + if(StringUtils.isBlank(regionId)){ + return Lists.newArrayList(); + } + return enterpriseUserMapper.getUserListByDeptLeader( regionId); + } + + public List getUserListByDeptLeaders(List regionIds){ + if(CollectionUtils.isEmpty(regionIds)){ + return Lists.newArrayList(); + } + return enterpriseUserMapper.getUserListByDeptLeaders( regionIds); + } + + + public List getUserListByRegionIds(List regionIds){ + if(CollectionUtils.isEmpty(regionIds)){ + return Lists.newArrayList(); + } + return enterpriseUserMapper.getUserListByRegionIds( regionIds); + } + + public Map getUserNameAndMobile(List userIds){ + List userList = getUserInfoByUserIds(userIds); + return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getMobile(), o.getName())).collect(Collectors.toMap(k -> k.getUserId(), v -> v.getName() + " " + v.getMobile())); + } + + public Map getUserNameMap(List userIds){ + List userList = getUserInfoByUserIds(userIds); + return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getMobile(), o.getName())).collect(Collectors.toMap(k -> k.getUserId(), v -> v.getName())); + } + + public Map getUserMap(List userIds){ + List userList = getUserInfoByUserIds(userIds); + return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getMobile(), o.getName())).collect(Collectors.toMap(k -> k.getUserId(), Function.identity())); + } + + public EnterpriseUserDO selectByMobile(String mobile) { + return enterpriseUserMapper.selectByMobile( mobile); + } + + public String getUserName(String userId){ + EnterpriseUserDO userInfo = getUserInfoById(userId); + return Optional.ofNullable(userInfo).map(EnterpriseUserDO::getName).orElse(StringUtils.EMPTY); + } + + public EnterpriseUserDO selectByInvestmentManager(String investmentManager) { + if (StringUtil.isEmpty(investmentManager)) { + return null; + } + return enterpriseUserMapper.selectByInvestmentManager( investmentManager); + } +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDao.java new file mode 100644 index 000000000..99b55aa4b --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserRoleDao.java @@ -0,0 +1,77 @@ +package com.cool.store.dao; + +import com.cool.store.entity.SysRoleDO; +import com.cool.store.enums.Role; +import com.cool.store.mapper.EnterpriseUserRoleMapper; +import com.cool.store.mapper.SysRoleMapper; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +/** + * @author zhangnan + * @date 2022-04-14 18:38 + */ +@Repository +public class EnterpriseUserRoleDao { + + @Resource + private EnterpriseUserRoleMapper enterpriseUserRoleMapper; + @Resource + private SysRoleMapper sysRoleMapper; + + /** + * 根据角色id查询用户id列表 + * @param roleIds + * @return + */ + public List selectUserIdsByRoleIdList( List roleIds) { + if( CollectionUtils.isEmpty(roleIds)) { + return Lists.newArrayList(); + } + return enterpriseUserRoleMapper.selectUserIdsByRoleIdList(roleIds); + } + + public List selectUserIdsByRole( Role role) { + if(Objects.isNull(role)) { + return Lists.newArrayList(); + } + return enterpriseUserRoleMapper.selectUserIdsByRoleIdList( Arrays.asList(Long.valueOf(role.getId()))); + } + + public List getUserIdsByRoleIds( List roleIds, List userIds){ + if(CollectionUtils.isEmpty(roleIds) || CollectionUtils.isEmpty(userIds)){ + return Lists.newArrayList(); + } + return enterpriseUserRoleMapper.getUserIdsByRoleIds(roleIds, userIds); + } + + public List getUserRoleIds( String userId){ + if(StringUtils.isAnyBlank(userId)){ + return Lists.newArrayList(); + } + return enterpriseUserRoleMapper.getUserRoleIds(userId); + } + + public Boolean checkIsAdmin( String userId) { + + // 1.取出所有用户角色 + // 2.匹配是否有管理员角色 + List sysRoleDOList = sysRoleMapper.listRoleByUserId(userId); + return ListUtils.emptyIfNull(sysRoleDOList) + .stream() + .anyMatch(role-> StringUtils.equals(Role.MASTER.getRoleEnum(),role.getRoleEnum())); + } + + public List getUserIdsByRoleIdList( List roleIdList) { + return enterpriseUserRoleMapper.getUserIdsByRoleIdList(roleIdList); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerUserInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerUserInfoDAO.java new file mode 100644 index 000000000..895a2019f --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerUserInfoDAO.java @@ -0,0 +1,97 @@ +package com.cool.store.dao; + +import com.cool.store.entity.HyPartnerUserInfoDO; +import com.cool.store.mapper.HyPartnerUserInfoMapper; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/8 19:41 + * @Version 1.0 + */ +@Repository +public class HyPartnerUserInfoDAO { + + + @Resource + HyPartnerUserInfoMapper hyPartnerUserInfoMapper; + + + public int updateByPrimaryKeySelective(HyPartnerUserInfoDO hyPartnerUserInfoDO){ + return hyPartnerUserInfoMapper.updateByPrimaryKeySelective(hyPartnerUserInfoDO); + } + + + /** + * 根据PartnerId查询用户 + * @param partnerId + * @return + */ + public HyPartnerUserInfoDO selectByPartnerId(String partnerId){ + if (StringUtils.isEmpty(partnerId)){ + return null; + } + return hyPartnerUserInfoMapper.selectByPartnerId(partnerId); + } + + /** + * 根据mobile查询用户 + * @param mobile + * @return + */ + public HyPartnerUserInfoDO selectByMobile(String mobile){ + if (StringUtils.isEmpty(mobile)){ + return null; + } + return hyPartnerUserInfoMapper.selectByMobile(mobile); + } + + public HyPartnerUserInfoDO selectByOpenid(String openid){ + if (StringUtils.isEmpty(openid)){ + return null; + } + return hyPartnerUserInfoMapper.selectByOpenid(openid); + } + + /** + * 根据PartnerIds批量查询用户 + * @param partnerIds + * @return + */ + public List selectByPartnerIds(List partnerIds){ + if (CollectionUtils.isEmpty(partnerIds)){ + return Lists.newArrayList(); + } + return hyPartnerUserInfoMapper.selectByPartnerIds(partnerIds); + } + + public int insertSelective( HyPartnerUserInfoDO record){ + return hyPartnerUserInfoMapper.insertSelective(record); + } + + public int updateJoinKnowById(Integer isWritePartnerKnow, Long id){ + if (id == null || isWritePartnerKnow == null){ + return 0; + } + return hyPartnerUserInfoMapper.updateJoinKnowById(isWritePartnerKnow, id); + } + + public int updateByPartnerId(HyPartnerUserInfoDO record){ + if(StringUtils.isBlank(record.getPartnerId())){ + return 0; + } + return hyPartnerUserInfoMapper.updateByPartnerId(record); + } + + + public String selectLastCrmCreateTime() { + return hyPartnerUserInfoMapper.selectLastCrmCreateTime(); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java new file mode 100644 index 000000000..069b8cc4f --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java @@ -0,0 +1,176 @@ +package com.cool.store.dao; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.RegionNode; +import com.cool.store.entity.RegionDO; +import com.cool.store.mapper.RegionMapper; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author shoul + * @ClassName RegionDao + * @Description 用一句话描述什么 + */ +@Repository +public class RegionDao { + + @Resource + private RegionMapper regionMapper; + + + public RegionNode getRegionByRegionId( String regionId) { + return regionMapper.getRegionByRegionId( regionId); + } + + public List getRegionByRegionIds( List regionIds) { + if (CollectionUtils.isEmpty(regionIds)) { + return Collections.emptyList(); + } + return regionMapper.getRegionByRegionIds( regionIds); + } + + + public RegionNode getRootRegion(String eid) { + return regionMapper.getRegionByRegionId( "1"); + } + + + /** + * 获取区域根据区域id列表(包含删除) + * + * 区域id + * @param regionIds 区域id列表 + * @return List + */ + public List getAllRegionByRegionIds( List regionIds) { + if (CollectionUtils.isEmpty(regionIds)) { + return Collections.emptyList(); + } + return regionMapper.getByIds( regionIds); + } + + /** + * 获取区域根据区域id(包含删除) + * + * + * @param regionId + * @return + */ + public RegionDO getRegionById( Long regionId) { + if ( Objects.isNull(regionId)) { + return null; + } + return regionMapper.getByRegionId( regionId); + } + + /** + * 根据id查询 + * @param id 区域id + * @return RegionDO + */ + public RegionDO selectById(Long id) { + if(Objects.isNull(id)) { + return null; + } + return regionMapper.getByRegionId( id); + } + + /** + * 获取所有的区域包含删除区域 + * + * + * @return + */ + public List getRegionsByEid( Long regionId) { + return regionMapper.getRegionsByEid( regionId); + } + + + public List getSubRegion( Long parentId) { + if ( Objects.isNull(parentId)) { + return Lists.newArrayList(); + } + return regionMapper.getSubRegion( parentId); + } + + public List getRegionList( List regionIds) { + if ( CollectionUtils.isEmpty(regionIds)) { + return Lists.newArrayList(); + } + return regionMapper.getRegionByRegionIds( regionIds); + } + + + public RegionDO getByRegionIdExcludeDeleted( Long regionId) { + if ( Objects.isNull(regionId)) { + return null; + } + return regionMapper.getByRegionIdExcludeDeleted( regionId); + } + + public List getSubIdsByRegionIds( List regionIds) { + if (CollectionUtils.isEmpty(regionIds)) { + return Lists.newArrayList(); + } + List regionPaths = regionMapper.getRegionPathByRegionIds( regionIds); + regionPaths = regionPaths.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); + if (CollectionUtils.isEmpty(regionPaths)) { + return Lists.newArrayList(); + } + return regionMapper.getSubIdsByRegionIds( regionPaths); + } + + /** + * 根据regionIds 的 全路径查下级 + * + * + * @param regionIds + * @return + */ + public List listSubIdsByRegionIds( List regionIds) { + if (CollectionUtils.isEmpty(regionIds)) { + return Lists.newArrayList(); + } + List regionIdList = regionIds.stream() + .map(a -> Long.valueOf(a)).collect(Collectors.toList()); + List regionDOList = regionMapper.getRegionPathByIds( regionIdList); + List fullRegionPathList = ListUtils.emptyIfNull(regionDOList) + .stream() + .map(RegionDO::getFullRegionPath) + .collect(Collectors.toList()); + fullRegionPathList = fullRegionPathList.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); + if (CollectionUtils.isEmpty(fullRegionPathList)) { + return Lists.newArrayList(); + } + return regionMapper.getSubIdsByRegionIds( fullRegionPathList); + } + + + public Map getRegionNameMap(List regionIds) { + List regionList = getAllRegionByRegionIds( regionIds); + if (CollectionUtils.isEmpty(regionList)) { + return Maps.newHashMap(); + } + return regionList.stream().collect(Collectors.toMap(k -> k.getId(), v -> v.getName(), (k1, k2) -> k1)); + } + + public List getCompRegionByRegionIds(List compParentIdList) { + return regionMapper.getCompRegionByRegionIds( compParentIdList); + } + + + public List getRegionByParentIds(List regionIdList) { + return regionMapper.getRegionByParentIds(regionIdList); + } + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDao.java new file mode 100644 index 000000000..39d36cef9 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleDao.java @@ -0,0 +1,59 @@ +package com.cool.store.dao; + +import com.cool.store.dto.UserRoleDTO; +import com.cool.store.entity.SysRoleDO; +import com.cool.store.mapper.SysRoleMapper; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author zhangnan + * @description: + * @date 2022/4/18 10:57 PM + */ +@Repository +public class SysRoleDao { + + @Resource + private SysRoleMapper sysRoleMapper; + + /** + * 根据角色id列表查询 + * @param roleIds + * @return + */ + public List selectRoleByRoleIds( List roleIds) { + if(CollectionUtils.isEmpty(roleIds)) { + return Lists.newArrayList(); + } + return sysRoleMapper.getRoleByRoleIds( roleIds); + } + + /** + * 根据角色id列表查询 + * @param userIdList + * @return + */ + public List getUserRoleNameByUserIdList( List userIdList) { + if(CollectionUtils.isEmpty(userIdList)) { + return Lists.newArrayList(); + } + return sysRoleMapper.getUserRoleNameByUserIdList( userIdList); + } + + public Map getRoleNameMap( List roleIds){ + List sysRoleDOS = selectRoleByRoleIds( roleIds); + if(CollectionUtils.isEmpty(sysRoleDOS)){ + return Maps.newHashMap(); + } + return sysRoleDOS.stream().collect(Collectors.toMap(k->k.getId(), v->v.getRoleName(), (k1, k2)->k1)); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java new file mode 100644 index 000000000..465fca54f --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java @@ -0,0 +1,101 @@ +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.collections4.ListUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author zhangchenbiao + * @FileName: UserRegionMappingDAO + * @Description: + * @date 2022-03-03 9:50 + */ +@Service +public class UserRegionMappingDAO { + + @Autowired + private UserRegionMappingMapper userRegionMappingMapper; + + /** + * 根据人员id列表查询人员所属部门 + * + * @param userIds + * @return + */ + public List listUserRegionMappingByUserId( List userIds){ + return userRegionMappingMapper.listUserRegionMappingByUserId( userIds); + } + + + /** + * 查询部门下的人员 + * + * @param regionIds + * @return + */ + public List selectUserListByRegionIds( List regionIds){ + return userRegionMappingMapper.selectUserListByRegionIds(regionIds); + } + + /** + * 获取区域的直连人员数量 + * + * @param regionIds + * @return + */ + public List> getRegionUserCount(List regionIds){ + return userRegionMappingMapper.getRegionUserCount(regionIds); + } + + /** + * 根据Userids和regionids查询数据 + * + * @param userIds + * @param regionIds + * @return + */ + public List listByUserIdsAndRegionIds(List userIds,List regionIds){ + return userRegionMappingMapper.listByUserIdsAndRegionIds(userIds,regionIds); + } + + /** + * 获取用户所在的部门 + * + * @param userIds + * @return + */ + public List getRegionIdsByUserIds( List userIds){ + if(CollectionUtils.isEmpty(userIds)){ + return Lists.newArrayList(); + } + return userRegionMappingMapper.getRegionIdsByUserIds( userIds); + } + + public List getRegionIdsByUserId( String userId){ + if(StringUtils.isAnyBlank( userId)){ + return Lists.newArrayList(); + } + List regionMappings = getRegionIdsByUserIds( Arrays.asList(userId)); + return ListUtils.emptyIfNull(regionMappings).stream().map(UserRegionMappingDO::getRegionId).distinct().collect(Collectors.toList()); + } + + /** + * 获取部门有哪些用户 + * + * @param regionIds + * @return + */ + public List getUserIdsByRegionIds( List regionIds){ + return userRegionMappingMapper.getUserIdsByRegionIds( regionIds); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java new file mode 100644 index 000000000..64f2413b4 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java @@ -0,0 +1,70 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.EnterpriseUserDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author zhangchenbiao + * @date 2023-06-06 02:29 + */ +@Mapper +public interface EnterpriseUserMapper { + /** + * 获取用户信息 + * @param userId + * @return + */ + EnterpriseUserDO getUserInfoById(@Param("userId") String userId); + + /** + * 批量获取用户信息 + * @param userIdList + * @return + */ + List getUserInfoByUserIds( @Param("userIdList") List userIdList); + + /** + * 根据关键字搜索部门下的用户 + * @param regionIds + * @param keyword + * @param leaderRegionIds + * @return + */ + List searchUserByRegionIdsAndKeyword( @Param("regionIds") List regionIds, @Param("keyword") String keyword, @Param("leaderRegionIds") List leaderRegionIds); + + /** + * 获取部门用户数 + * @param regionId + * @return + */ + Integer getUserCountByRegionId( @Param("regionId") String regionId); + + /** + * 获取部门负责人用户列表 + * @param regionId + * @return + */ + List getUserListByDeptLeader( @Param("regionId")String regionId); + + /** + * 根据开发经理获取用户列表 + * @param regionIds + * @return + */ + List getUserListByDeptLeaders( @Param("regionIds") List regionIds); + + /** + * 获取部门人员 + * @param regionIds + * @return + */ + List getUserListByRegionIds( @Param("regionIds") List regionIds); + + EnterpriseUserDO selectByMobile( @Param("mobile") String mobile); + + EnterpriseUserDO selectByInvestmentManager( @Param("investmentManager") String investmentManager); + +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserRoleMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserRoleMapper.java new file mode 100644 index 000000000..cbad732f2 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserRoleMapper.java @@ -0,0 +1,80 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.EnterpriseUserRole; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface EnterpriseUserRoleMapper { + /** + * 主键查询 + */ + EnterpriseUserRole selectByPrimaryKey( @Param("id") String id); + + /** + * 根据userId查询该用户与钉钉角色、职位的映射关系 + */ + List selectDingRoleMappingByUserId( @Param("userId") String userId); + + List listsUserRoleByUserIdListAndSource( @Param("userIds") List userIds, @Param("source") String source); + + List selectMdtRoleMappingByUserId( @Param("userId") String userId); + /** + * 根据角色id查询 + */ + List selectByRoleId( @Param("roleId") String roleId); + + /** + * 根据userId查询 + */ + List selectIdsByUserId( @Param("userId") String userId); + + List selectIdsByUserIds( @Param("userIds") List userIds); + + /** + * 根据用户id列表查询 + */ + List selectByUserIdList( @Param("userIds") List userIds); + + EnterpriseUserRole selectByUserIdAndRoleId( @Param("userId") String userId, @Param("roleId") String roleId); + /** + * 获取某个角色的用户 + * + * @param userIds + * @param roleId + * @return + */ + List selectUserIdByRoleId( @Param("userIds") List userIds, @Param("roleId") String roleId); + /** + * 获取用户有哪些角色 + * + * @param userId + * @return + */ + List selectRoleIdsByUserId( @Param("userId") String userId); + + /** + * 获取角色下的用户 + * + * @param roleId + * @return + */ + List selectUserIdsByRoleId( @Param("roleId") String roleId); + + /** + * 获取角色列表下的用户 + * + * @param roleIds + * @return + */ + List selectUserIdsByRoleIdList( @Param("roleIds") List roleIds); + + List getUserIdsByRoleIds( @Param("roleIds")List roleIds, @Param("userIds")List userIds); + + List getUserRoleIds( @Param("userId") String userId); + + List getUserIdsByRoleIdList( @Param("roleIdList")List roleIdList); + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserInfoMapper.java new file mode 100644 index 000000000..4facd39ea --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerUserInfoMapper.java @@ -0,0 +1,57 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.HyPartnerUserInfoDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author zhangchenbiao + * @date 2023-05-29 03:53 + */ +@Mapper +public interface HyPartnerUserInfoMapper { + /** + * + * 默认插入方法,只会给有值的字段赋值 + * 会对传进来的字段做判空处理,如果字段为空,则使用数据库默认字段或者null + * dateTime:2023-05-29 03:53 + */ + int insertSelective(@Param("record") HyPartnerUserInfoDO record); + + /** + * + * 默认更新方法,根据主键更新,不会把null值更新到数据库,避免覆盖之前有值的 + * dateTime:2023-05-29 03:53 + */ + int updateByPrimaryKeySelective(@Param("record") HyPartnerUserInfoDO record); + + /** + * 根据partnerID查询用户信息 + * @param partnerId + * @return + */ + HyPartnerUserInfoDO selectByPartnerId(@Param("partnerId") String partnerId); + + HyPartnerUserInfoDO selectByMobile(@Param("mobile") String mobile); + + HyPartnerUserInfoDO selectByOpenid(@Param("openid") String openid); + + + /** + * 根据partnerIDs批量查询用户信息 + * @param partnerIdList + * @return + */ + List selectByPartnerIds(@Param("partnerIdList") List partnerIdList); + + int updateJoinKnowById(@Param("isWritePartnerKnow")Integer isWritePartnerKnow, @Param("id")Long id); + + int selectByHourDateCount(@Param("selectTime") String hourDayDate, @Param("now") String now); + + int updateByPartnerId(@Param("record") HyPartnerUserInfoDO record); + + String selectLastCrmCreateTime(); + +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java new file mode 100644 index 000000000..ea7ff8b24 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java @@ -0,0 +1,97 @@ +package com.cool.store.mapper; + +import com.cool.store.dto.RegionNode; +import com.cool.store.entity.RegionDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author shoul + */ +@Mapper +public interface RegionMapper { + + /** + * 获取所有的区域包含删除区域 + * + * @return + */ + List getRegionsByEid( @Param("regionId") Long regionId); + + /** + * 获取区域列表 + * + * @param regionIds + * @return + */ + List getRegionByRegionIdsForMap( @Param("regionIds") List regionIds); + /** + * 获取区域 + * + * @param regionId + * @return + */ + RegionNode getRegionByRegionId( @Param("regionId") String regionId); + + /** + * 获取区域列表(不包含删除) + * + * @param regionIds + * @return + */ + List getRegionByRegionIds( @Param("regionIds") List regionIds); + + /** + * 区域列表(包含删除) + * + * @param ids + * @return + */ + List getByIds(@Param("list")List ids); + + List getRegionPathByIds(@Param("list")List ids); + + RegionDO getByRegionId( @Param("regionId") Long regionId); + + List getRegionsByParentId( @Param("parentId") Long parentId); + + List listRegionByIds( @Param("regionIds") List regionIds); + + List listRegionByRegionPath(@Param("regionPath") String regionPath); + + /** + * 筛选删除状态的 + * + * @param regionId + * @return + */ + RegionDO getByRegionIdExcludeDeleted( @Param("regionId") Long regionId); + + /** + * 获取子区域 + * + * @param parentId + * @return + */ + List getSubRegion( @Param("parentId")Long parentId); + /** + * 获取区域范围内的区域id + * + * @param regionPaths + * @return + */ + List getSubIdsByRegionIds( @Param("regionPaths")List regionPaths); + + List getSubIdsByRegionpaths( @Param("regionPaths")List regionPaths); + + List getRegionPathByRegionIds( @Param("regionIds")List regionIds); + + List getCompRegionByRegionIds(@Param("compParentIdList") List compParentIdList); + + int countByRegionIdList(@Param("regionIdList") List regionIdList); + + List getRegionByParentIds(@Param("regionIdList") List regionIdList); + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysMenuMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysMenuMapper.java new file mode 100644 index 000000000..6429ee571 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysMenuMapper.java @@ -0,0 +1,28 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.SysMenuDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 角色 + * + * @author shoul + */ +@Mapper +public interface SysMenuMapper { + /** + * 查询菜单(从平台库查询) + * @param parentIds + * @param platformType + * @param env + * @return + */ + List selectMenuAll(@Param("list") List parentIds, + @Param("platformType") String platformType, + @Param("env") String env); + + SysMenuDO selectMenu(@Param("id")Long id); +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java new file mode 100644 index 000000000..fcd810745 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java @@ -0,0 +1,137 @@ +package com.cool.store.mapper; + +import com.cool.store.dto.UserRoleDTO; +import com.cool.store.entity.EnterpriseUserRole; +import com.cool.store.entity.SysRoleDO; +import com.cool.store.vo.SysRoleVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 角色 + */ +@Mapper +public interface SysRoleMapper { + + List getRoleUserByRoleEnum(@Param("roleEnum") String roleEnum, + @Param("positionType") String positionType); + + List getRoleUserByRoleAuth(@Param("roleAuth") String roleAuth, + @Param("positionType") String positionType); + + /** + * 根据用户角色查询角色下的用户人数 + * + * @param roleId + * + * @return + */ + Integer getPersonNumsByRoles( @Param("roleId") Long roleId); + + List userAndRolesByUserId(@Param("userIdList") List userIdList); + + /** + * 通过id查询所有用户和角色的关联关系 + * @param userId + * @return + */ + List selectRolesByuserId(@Param("userId") String userId); + + String getHighestPriorityRoleIdByUserId(@Param("userId") String userId); + + /** + * 根据角色名称查询是否存在 + * @param roleName + * @return + */ + List getRolesByName(@Param("roleName") String roleName); + + /** + * 查询角色详情 + * @param roleId + * @return + */ + SysRoleDO getRole( @Param("roleId") Long roleId); + + /** + * roleEnum 不能为空 + * + * @param roleEnum + * @return + */ + SysRoleDO getRoleByRoleEnum( @Param("roleEnum") String roleEnum); + + /** + * 批量查询角色详情 + * + * @param roleIdList + * @return + */ + List getRoleList( @Param("roleIdList") List roleIdList); + + /** + * 批量查询角色详情(包括钉钉角色) + * @param roleIdList + * @return + */ + List getRoleByRoleIds( @Param("roleIdList") List roleIdList); + /** + * 批量查询角色名称列表 + * + * @param roleIdList + * @return + */ + List getRoleNameList( @Param("roleIdList") List roleIdList); + + /** + * 查优先级最高的角色 + * + * @param userId + * @return + */ + SysRoleDO getHighestPrioritySysRoleDoByUserId(@Param("userId") String userId); + /** + * 根据用户id查询角色,包括钉钉同步角色 + */ + List getSysRoleByUserId(@Param("userId") String userId); + + List listRoleByUserId(@Param("userId") String userId); + /** + * 查询钉钉角色中的人员Id + * @param roleId + * @return + */ + List selectUserByDingRole(@Param("roleId") Long roleId); + /** + * 根据职位id获取人员列表 + + * @param positionIds + * @return + */ + List getPositionUserIds( @Param("positionIds") List positionIds); + + List selectUserRoleBySourceAndUserId(@Param("source") String source , + @Param("userIdList") List userIdList); + + List getUserIdListByRoleIdList(@Param("roleIdList") List roleIdList); + /** + * 获取用户岗位信息 + * @param userIdList + * @return + */ + List getUserRoleNameByUserIdList( @Param("userIdList") List userIdList); + + /** + * 根据岗位来源和角色名称获取角色 + 企业id + * @param synDingRoleId 角色名称 + * @param source 岗位来源 + * @return: java.util.List + * @Author: xugangkun + * @Date: 2021/3/22 16:11 + */ + List selectBySynDingRoleIdAndSource( @Param("source") String source, @Param("synDingRoleId") Long synDingRoleId); + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMenuMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMenuMapper.java new file mode 100644 index 000000000..614ccac2a --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMenuMapper.java @@ -0,0 +1,30 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.SysRoleMenuDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * describe: + * + * @author zhouyiping + * @date 2020/09/23 + */ +@Mapper +public interface SysRoleMenuMapper { + + List listSysRoleMenuByRoleIdOld(@Param("roleId")Long roleId, + @Param("platform")String platform); + + List listSysRoleMenuByRoleId(@Param("roleId")Long roleId, + @Param("platform")String platform); + + List listSysRoleMenuByPlatform( @Param("platform")String platform); + + List listSysRoleMenuIdByMenuId(@Param("platform")String platform, + @Param("menuId")Long menuId); + + List listRoleMenuIdByMenuIds(@Param("menuIds")List menuIds); +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java new file mode 100644 index 000000000..7322e4a85 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java @@ -0,0 +1,75 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.UserRegionMappingDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.HashMap; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2022/2/24 16:08 + * @Version 1.0 + */ +@Mapper +public interface UserRegionMappingMapper { + + /** + * 根据人员id列表查询人员所属部门 + * + * @param userIds + * @return + */ + List listUserRegionMappingByUserId( @Param("userIds") List userIds); + + /** + * 查询部门下的人员 + * + * @param regionIds + * @return + */ + List selectUserListByRegionIds( @Param("regionIds") List regionIds); + + /** + * 查询指定部门人员数量 + * + * @param regionIds + * @return + */ + Integer selectUserCountByRegionIds( @Param("regionIds") List regionIds); + + /** + * 获取区域的直连人员数量 + * + * @param regionIds + * @return + */ + List> getRegionUserCount( @Param("regionIds") List regionIds); + + /** + * 根据Userids和regionids查询数据 + * + * @param userIds + * @param regionIds + * @return + */ + List listByUserIdsAndRegionIds(@Param("userIds") List userIds,@Param("regionIds") List regionIds); + + /** + * 获取用户属于哪些部门 + * + * @param userIds + * @return + */ + List getRegionIdsByUserIds(@Param("userIds") List userIds); + + /** + * 获取部门有哪些用户 + * + * @param regionIds + * @return + */ + List getUserIdsByRegionIds(@Param("regionIds") List regionIds); + +} diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml new file mode 100644 index 000000000..fcf3d61d0 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, user_id, name, remark, mobile, email, org_email, main_admin, is_admin, unionid, + avatar, jobnumber, is_leader, is_leader_in_depts, face_url, user_status, create_time + + + user_region_ids + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml new file mode 100644 index 000000000..871e13c30 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserRoleMapper.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml new file mode 100644 index 000000000..6cb29e474 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerUserInfoMapper.xml @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, partner_id, mobile, username, live_area, want_shop_area, accept_adjust_type, + invite_code, is_write_partner_know, create_time, update_time, shop_code, shop_name, shop_id, + recommend_partner_id, recommend_partner_name, recommend_partner_mobile,user_channel_id,openid + + + + + + + + + + + + + + insert into hy_partner_user_info + + + partner_id, + + + mobile, + + + username, + + + live_area, + + + want_shop_area, + + + accept_adjust_type, + + + invite_code, + + + is_write_partner_know, + + + create_time, + + + update_time, + + + shop_code, + + + shop_name, + + + shop_id, + + + recommend_partner_id, + + + recommend_partner_name, + + + recommend_partner_mobile, + + + user_channel_id, + + + ec_want_shop_area, + + + crm_create_time, + + + openid, + + + + + #{record.partnerId}, + + + #{record.mobile}, + + + #{record.username}, + + + #{record.liveArea}, + + + #{record.wantShopArea}, + + + #{record.acceptAdjustType}, + + + #{record.inviteCode}, + + + #{record.isWritePartnerKnow}, + + + #{record.createTime}, + + + #{record.updateTime}, + + + #{record.shopCode}, + + + #{record.shopName}, + + + #{record.shopId}, + + + #{record.recommendPartnerId}, + + + #{record.recommendPartnerName}, + + + #{record.recommendPartnerMobile}, + + + #{record.userChannelId}, + + + #{record.ecWantShopArea}, + + + #{record.crmCreateTime}, + + + #{record.openid}, + + + + + update hy_partner_user_info + + + partner_id = #{record.partnerId}, + + + mobile = #{record.mobile}, + + + username = #{record.username}, + + + live_area = #{record.liveArea}, + + + want_shop_area = #{record.wantShopArea}, + + + accept_adjust_type = #{record.acceptAdjustType}, + + + invite_code = #{record.inviteCode}, + + + is_write_partner_know = #{record.isWritePartnerKnow}, + + + create_time = #{record.createTime}, + + + update_time = #{record.updateTime}, + + + shop_code = #{record.shopCode}, + + + shop_name = #{record.shopName}, + + + shop_id = #{record.shopId}, + + + recommend_partner_id = #{record.recommendPartnerId}, + + + recommend_partner_name = #{record.recommendPartnerName}, + + + recommend_partner_mobile = #{record.recommendPartnerMobile}, + + + ec_want_shop_area = #{record.ecWantShopArea}, + + + openid = #{record.openid}, + + + where id = #{record.id} + + + + update hy_partner_user_info + set `is_write_partner_know`=#{isWritePartnerKnow,jdbcType=INTEGER} + where id=#{id,jdbcType=BIGINT} + + + + update hy_partner_user_info + + + mobile = #{record.mobile}, + + + username = #{record.username}, + + + live_area = #{record.liveArea}, + + + want_shop_area = #{record.wantShopArea}, + + + accept_adjust_type = #{record.acceptAdjustType}, + + + invite_code = #{record.inviteCode}, + + + is_write_partner_know = #{record.isWritePartnerKnow}, + + + create_time = #{record.createTime}, + + + update_time = #{record.updateTime}, + + + shop_code = #{record.shopCode}, + + + shop_name = #{record.shopName}, + + + shop_id = #{record.shopId}, + + + recommend_partner_id = #{record.recommendPartnerId}, + + + recommend_partner_name = #{record.recommendPartnerName}, + + + recommend_partner_mobile = #{record.recommendPartnerMobile}, + + + where partner_id = #{record.partnerId} + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml new file mode 100644 index 000000000..a89d96481 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml @@ -0,0 +1,335 @@ + + + + + + id , + id as regionId, + name , + parent_id as parentId, + group_id as groupId, + store_id as storeId, + create_time as createTime, + create_name as createName, + update_time as updateTime, + update_name as updateName, + syn_ding_dept_id as synDingDeptId, + region_type as regionType, + region_path as regionPath, + deleted as deleted, + third_dept_id as thirdDeptId + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/SysMenuMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/SysMenuMapper.xml new file mode 100644 index 000000000..7e713e45e --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/SysMenuMapper.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml new file mode 100644 index 000000000..7c62f66fc --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMenuMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMenuMapper.xml new file mode 100644 index 000000000..ab186a6d7 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMenuMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml new file mode 100644 index 000000000..27e54550c --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + id, region_id, user_id, create_id, create_time, update_id, update_time + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/RegionNode.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/RegionNode.java new file mode 100644 index 000000000..4ea2b32ff --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/RegionNode.java @@ -0,0 +1,100 @@ +package com.cool.store.dto; + +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +/** + * @ClassName RegionNode + * @Description 用一句话描述什么 + */ +@Data +public class RegionNode { + /** + * 自增ID + */ + private Long id; + + /** + * 区域ID + */ + private String regionId; + + /** + * 名称 + */ + private String name; + /** + * 父ID + */ + private String parentId; + + private String parentName; + + /** + * 分组ID + */ + private String groupId; + + /** + * 创建时间 + */ + private Long createTime; + /** + * 创建人 + */ + private String createName; + /** + * 更新时间 + */ + private Long updateTime; + /** + * 更新人 + */ + private String updateName; + + /** + * 子节点 + */ + private List children; + + /** + * 是否有区域权限 + */ + private Boolean isAuth; + + /** + * 门店数量 + */ + private Long storeCount; + + /** + * dinging部门id + */ + private String synDingDeptId; + + /** + * root path store + */ + private String regionType; + + /** + * 路径 + */ + private String regionPath; + + private String fullRegionPath; + + public String getFullRegionPath() { + if(id != null && id == 1L){ + return "/1/"; + } + if (StringUtils.isNotBlank(regionPath)) { + return regionPath + id + "/"; + } else { + return "/" + id + "/"; + } + } + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/UserRoleDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/UserRoleDTO.java new file mode 100644 index 000000000..da659db45 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/UserRoleDTO.java @@ -0,0 +1,22 @@ +package com.cool.store.dto; + +import lombok.Data; + +/** + * describe: + * + * @author zhouyiping + * @date 2020/11/06 + */ +@Data +public class UserRoleDTO { + private String userId; + private String roleName; + private String roleAuth; + private Long roleId; + private Integer priority; + + private String roleEnum; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/response/ResultDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/response/ResultDTO.java new file mode 100644 index 000000000..fe9524de2 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/response/ResultDTO.java @@ -0,0 +1,99 @@ +package com.cool.store.dto.response; + + +import java.io.Serializable; + +/** + * rpc统一返回实体类 + * + * @author byd + */ +public class ResultDTO implements Serializable { + + private static final long serialVersionUID = -2217360460304088285L; + + private boolean success = true; + /** + * 返回码 + */ + private int code; + + /** + * 返回信息 + */ + private String message; + + /** + * 返回数据 + */ + private T data; + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public ResultDTO() { + super(); + } + + public ResultDTO(T data) { + super(); + this.data = data; + } + + public ResultDTO(int code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + + public ResultDTO(int code, String message) { + this.code = code; + this.message = message; + } + + public static ResultDTO successResult() { + return new ResultDTO(200000, "请求成功"); + } + + public static ResultDTO successResult(Object data) { + return new ResultDTO(200000, "请求成功", data); + } + + public static ResultDTO failResult(String msg) { + return new ResultDTO(400000, msg); + } + + public static ResultDTO failResult(int code, String msg) { + return new ResultDTO(code, msg); + } + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/CodeSessionDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/CodeSessionDTO.java new file mode 100644 index 000000000..333a8a6ba --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/CodeSessionDTO.java @@ -0,0 +1,23 @@ +package com.cool.store.dto.wx; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +/** + * @author zhangchenbiao + * @FileName: CodeSessionDTO + * @Description: + * @date 2023-05-29 14:28 + */ +@Data +public class CodeSessionDTO extends WXBaseResultDTO{ + + @JSONField(name = "session_key") + private String sessionKey; + + @JSONField(name = "openid") + private String openid; + + @JSONField(name = "unionid") + private String unionId; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniAppUrlLinkDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniAppUrlLinkDTO.java new file mode 100644 index 000000000..7595de0e3 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniAppUrlLinkDTO.java @@ -0,0 +1,15 @@ +package com.cool.store.dto.wx; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +/** + * @Author: young.yu + * @Date: 2023-09-12 14:48 + * @Description: + */ +@Data +public class MiniAppUrlLinkDTO extends WXBaseResultDTO{ + @JSONField(name = "url_link") + private String urlLink; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniAppUrlLinkReqDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniAppUrlLinkReqDTO.java new file mode 100644 index 000000000..c37dc63e6 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniAppUrlLinkReqDTO.java @@ -0,0 +1,14 @@ +package com.cool.store.dto.wx; + +import lombok.Data; + +/** + * @Author: + * @Date: 2023-09-12 14:48 + * @Description: + */ +@Data +public class MiniAppUrlLinkReqDTO { + private String path; + private String query; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniProgramLoginDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniProgramLoginDTO.java new file mode 100644 index 000000000..35f63e869 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniProgramLoginDTO.java @@ -0,0 +1,29 @@ +package com.cool.store.dto.wx; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author zhangchenbiao + * @FileName: MiniProgramLoginDTO + * @Description: + * @date 2023-05-29 14:28 + */ +@Data +public class MiniProgramLoginDTO { + + @NotBlank(message = "jsCode不能为空") + private String jsCode; + + @NotBlank(message = "手机号code不能为空") + private String mobileCode; + + @NotBlank(message = "用户encryptedData不能为空") + private String encryptedData; + + @NotBlank(message = "ivStr不能为空") + private String ivStr; + + private String userChannelEnum; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/PhoneInfoDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/PhoneInfoDTO.java new file mode 100644 index 000000000..a424549e9 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/PhoneInfoDTO.java @@ -0,0 +1,36 @@ +package com.cool.store.dto.wx; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +/** + * @author wxp + * @FileName: PhoneInfoDTO + * @Description: + * @date 2023-06-14 14:28 + */ +@Data +public class PhoneInfoDTO extends WXBaseResultDTO{ + + @JSONField(name = "phone_info") + private PhoneInfo phoneInfo; + + @Data + public static class PhoneInfo{ + /** + * 用户绑定的手机号(国外手机号会有区号) + */ + private String phoneNumber; + + /** + * 没有区号的手机号 + */ + private String purePhoneNumber; + + /** + * 区号 + */ + private String countryCode; + + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/WXBaseResultDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/WXBaseResultDTO.java new file mode 100644 index 000000000..b608a32dc --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/WXBaseResultDTO.java @@ -0,0 +1,27 @@ +package com.cool.store.dto.wx; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +/** + * @author zhangchenbiao + * @FileName: WXBaseResultDTO + * @Description: + * @date 2023-05-29 14:52 + */ +@Data +public class WXBaseResultDTO { + + private static final String SUCCESS_CODE = "0"; + + @JSONField(name = "errcode") + private String errCode; + + @JSONField(name = "errmsg") + private String errMsg; + + public boolean isSuccess() { + return this.errCode == null || this.errCode.isEmpty() || this.errCode.equals("0"); + } + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserDO.java new file mode 100644 index 000000000..d00f2f7db --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserDO.java @@ -0,0 +1,73 @@ +package com.cool.store.entity; + +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.Date; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * @author zhangchenbiao + * @date 2023-06-06 02:29 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EnterpriseUserDO implements Serializable { + @ApiModelProperty("用户主键id") + private String id; + + @ApiModelProperty("用户id") + private String userId; + + @ApiModelProperty("") + private String name; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("手机号码") + private String mobile; + + @ApiModelProperty("员工的电子邮箱") + private String email; + + @ApiModelProperty("员工的企业邮箱") + private String orgEmail; + + @ApiModelProperty("是否是主管理员,0:否,1:是") + private Boolean mainAdmin; + + @ApiModelProperty("是否为企业的管理员, true表示是, false表示不是") + private Boolean isAdmin; + + @ApiModelProperty("在当前isv全局范围内唯一标识一个用户的身份,用户无法修改") + private String unionid; + + @ApiModelProperty("头像url") + private String avatar; + + @ApiModelProperty("工号") + private String jobnumber; + + @ApiModelProperty("是否是部门的主管, true表示是, false表示不是") + private Boolean isLeader; + + private String isLeaderInDepts; + + @ApiModelProperty("人脸照片url") + private String faceUrl; + + @ApiModelProperty("用户状态 0待审核 1正常 2冻结") + private Integer userStatus; + + @ApiModelProperty("用户创建时间") + private Date createTime; + + @ApiModelProperty("部门集合(region_ids)") + private String userRegionIds; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserRole.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserRole.java new file mode 100644 index 000000000..30f1dd2ed --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserRole.java @@ -0,0 +1,42 @@ +package com.cool.store.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @ClassName EnterpriseUserRole + * @Description 用一句话描述什么 + * @author 首亮 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EnterpriseUserRole { + private Long id; + private String roleId; + private String userId; + + //创建时间 + private Date createTime; + //更新时间 + public EnterpriseUserRole(String roleId, String userId) { + this.roleId = roleId; + this.userId = userId; + this.createTime = new Date(); + } + + private Date updateTime; + + public static List convertList(List roleIds, String userId){ + List resultList = new ArrayList<>(); + for (Long roleId : roleIds) { + resultList.add(new EnterpriseUserRole(String.valueOf(roleId), userId)); + } + return resultList; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserInfoDO.java new file mode 100644 index 000000000..bd449fd72 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerUserInfoDO.java @@ -0,0 +1,88 @@ +package com.cool.store.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * + * @author zhangchenbiao + * @date 2023-05-29 03:53 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class HyPartnerUserInfoDO implements Serializable { + @ApiModelProperty("") + private Long id; + + @ApiModelProperty("hy_partner_user_info.partner_id") + private String partnerId; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("申请人姓名") + private String username; + + @ApiModelProperty("常驻区域") + private String liveArea; + + @ApiModelProperty("意向开店区域") + private String wantShopArea; + + @ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂") + private Integer acceptAdjustType; + + @ApiModelProperty("邀请码") + private String inviteCode; + + @ApiModelProperty("是否填写加盟需知") + private Integer isWritePartnerKnow; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; + + @ApiModelProperty("店铺编码") + private String shopCode; + + @ApiModelProperty("店铺名称") + private String shopName; + + @ApiModelProperty("店铺ID") + private String shopId; + + @ApiModelProperty("推荐加盟商id") + private String recommendPartnerId; + + @ApiModelProperty("推荐加盟商姓名") + private String recommendPartnerName; + + @ApiModelProperty("推荐加盟商手机号") + private String recommendPartnerMobile; + + @ApiModelProperty("hy_partner_user_channel.channel_id") + private Integer userChannelId; + + + @ApiModelProperty("ec意向区域") + private String ecWantShopArea; + + @ApiModelProperty("ec创建时间") + private Date crmCreateTime; + + @ApiModelProperty("微信openid") + private String openid; + +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/RegionDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/RegionDO.java new file mode 100644 index 000000000..8ee50368d --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/RegionDO.java @@ -0,0 +1,173 @@ +package com.cool.store.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; + +/** + * @ClassName RegionDO + * @Description 区域 + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +public class RegionDO { + /** + * 自增ID + */ + private Long id; + + /** + * 区域ID + */ + private String regionId; + + /** + * 名称 + */ + private String name; + /** + * 父ID + */ + private String parentId; + + /** + * 父ID + */ + private String groupId; + + /** + * 创建时间 + */ + private Long createTime; + /** + * 创建人 + */ + private String createName; + /** + * 更新时间 + */ + private Long updateTime; + /** + * 更新人 + */ + private String updateName; + + + /** + * dinging部门id + */ + private String synDingDeptId; + + /** + * 是否删除标记 + */ + private Boolean deleted; + + /** + * root path store + */ + private String regionType; + + + /** + * 区域路径 + */ + private String regionPath; + + /** + * 区域门店数量 + */ + private Integer storeNum; + + /** + * 区域门店范围是否 非DO 同步时用到的 + */ + private Boolean storeRange = false; + + /** + * 门店地址 非DO + */ + private String address; + + /** + * 门店经度 非DO + */ + private String longitude; + + + /** + * 纬度 非DO + */ + private String latitude; + + /** + * 门店编号 非DO + */ + private String storeCode; + + /** + * 门店开业日期 非DO + */ + private String openDate; + + /** + * 门店ID + */ + private String storeId; + + public String fullRegionPath; + + private Integer orderNum; + + private Integer unclassifiedFlag; + + /** + * 通讯录code 非DO + */ + private String contactCode; + + /** + * 门店扩展信息 + */ + private String extendField; + + /** + * 第三方唯一id + */ + private String thirdDeptId; + + /** + * 门店状态 + */ + private String storeStatus; + + /** + * 是否是外部组织节点 + */ + private Boolean isExternalNode; + + public RegionDO(Long id, String name, String parentId, String groupId, Long createTime, String createName) { + this.id = id; + this.name = name; + this.parentId = parentId; + this.groupId = groupId; + this.createTime = createTime; + this.createName = createName; + } + public String getFullRegionPath() { + if(id != null && id == 1L){ + return "/1/"; + } + if (StringUtils.isNotBlank(regionPath)) { + return regionPath + id + "/"; + } else { + return "/" + id + "/"; + } + } + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SysMenuDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysMenuDO.java new file mode 100644 index 000000000..e4f743d7e --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysMenuDO.java @@ -0,0 +1,102 @@ +package com.cool.store.entity; + + +import lombok.Data; + +/** + * 菜单表 + * + * @author shoul + */ +@Data +public class SysMenuDO { + + /** + * ID + */ + private Long id; + /** + * 父级ID + */ + private Long parentId; + /** + * 菜单编号 + */ + private String code; + /** + * 菜单名称 + */ + private String name; + /** + * 菜单别名 + */ + private String alias; + /** + * 请求地址(前端路由) + */ + private String path; + /** + * 后端权限标识 + */ + private String perms; + /** + * 菜单资源(图片) + */ + private String source; + /** + * 排序 + */ + private Integer sort; + /** + * 菜单类型(菜单,按钮) + */ + private Integer category; + /** + * 操作按钮类型(工具栏,操作栏,工具操作栏) + */ + private Integer action; + /** + * 描述 + */ + private String remark; + /** + * 所属项目(PC,小程序) + */ + private String platform; + /** + * 是否已删除 + */ + private Integer isDeleted; + /** + * 操作类型 + */ + private String type; + /** + * 是否新开页面 + */ + private String target; + /** + * 组件 + */ + private String component; + /** + * 图标 + */ + private String icon; + /** + * 是否选中 + */ + private Boolean isChecked; + + private Integer menuType; + + /** + * 菜单环境 + */ + private String env; + + /** + * 常用功能图标 + */ + private String commonFunctionsIcon; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleDO.java new file mode 100644 index 000000000..2952c739e --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleDO.java @@ -0,0 +1,91 @@ +package com.cool.store.entity; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * 角色表 + * + * @author shoul + */ +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class SysRoleDO { + + /** + * 角色ID + */ + private Long id; + + /** + * 角色名称 + */ + private String roleName; + + /** + * 是否预制 + */ + @Deprecated + private Integer isInternal; + + private String appMenu; + + /** + * 岗位来源:(create:自建岗位, sync:从钉钉同步的角色, sync_position:钉钉同步的职位) + */ + private String source; + + private String roleAuth; + + private String positionType; + + /** + * 钉钉角色id + */ + private Long synDingRoleId; + /** + * 角色排序 + */ + private Integer priority; + /** + * 创建时间 + */ + private Date createTime; + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 角色枚举用于判定逻辑 + */ + private String roleEnum; + + /** + * 创建人 + */ + private String createUser; + + /** + * 更新人 + */ + private String updateUser; + + private String thirdUniqueId; + + + public SysRoleDO(Long id, String roleName, Integer isInternal, String source, String positionType) { + this.id = id; + this.roleName = roleName; + this.isInternal = isInternal; + this.source = source; + this.positionType = positionType; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleMenuDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleMenuDO.java new file mode 100644 index 000000000..4e905a205 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleMenuDO.java @@ -0,0 +1,26 @@ +package com.cool.store.entity; + +import lombok.Data; + +/** + * describe: + * + * @author zhouyiping + * @date 2020/09/23 + */ +@Data +public class SysRoleMenuDO { + private Long id; + private Long menuId; + private Long roleId; + private String platform; + + public SysRoleMenuDO() { + } + + public SysRoleMenuDO(Long menuId, Long roleId, String platform) { + this.menuId = menuId; + this.roleId = roleId; + this.platform = platform; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java new file mode 100644 index 000000000..1ba4e5289 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java @@ -0,0 +1,77 @@ +package com.cool.store.entity; + +import com.google.common.collect.Lists; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2022/2/24 15:37 + * @Version 1.0 + */ +@Data +public class UserRegionMappingDO { + + /** + * id + */ + private Integer id; + /** + * 映射主键 区域id + */ + private String regionId; + /** + * 用户id + */ + private String userId; + /** + * 创建人id + */ + private String createId; + /** + * 创建时间 + */ + private Long createTime; + /** + * 更新人id + */ + private String updateId; + /** + * 更新时间 + */ + private Long updateTime; + + + public static List convertList(String userId, List regionIds, String operator){ + if(CollectionUtils.isEmpty(regionIds)){ + return Lists.newArrayList(); + } + List userRegionList = new ArrayList<>(); + for (String regionId : regionIds) { + UserRegionMappingDO result = new UserRegionMappingDO(); + result.setUserId(userId); + result.setRegionId(regionId); + result.setCreateId(operator); + result.setUpdateId(operator); + result.setCreateTime(System.currentTimeMillis()); + result.setUpdateTime(System.currentTimeMillis()); + userRegionList.add(result); + } + return userRegionList; + } + + public static UserRegionMappingDO convertDO(String userId, String regionId, String operator){ + UserRegionMappingDO result = new UserRegionMappingDO(); + result.setUserId(userId); + result.setRegionId(regionId); + result.setCreateId(operator); + result.setUpdateId(operator); + result.setCreateTime(System.currentTimeMillis()); + result.setUpdateTime(System.currentTimeMillis()); + return result; + } + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/MobileUpdateRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/MobileUpdateRequest.java new file mode 100644 index 000000000..8e6a55f87 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/MobileUpdateRequest.java @@ -0,0 +1,22 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author wxp + * @Date 2023/5/31 11:01 + * @Version 1.0 + */ +@Data +@ApiModel +public class MobileUpdateRequest { + + @NotBlank(message = "手机号code不能为空") + @ApiModelProperty("手机号code") + private String mobileCode; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/SysRoleVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/SysRoleVO.java new file mode 100644 index 000000000..ebf9fba12 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/SysRoleVO.java @@ -0,0 +1,29 @@ +package com.cool.store.vo; + +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.entity.SysMenuDO; +import com.cool.store.entity.SysRoleDO; +import lombok.Data; + +import java.util.List; + +@Data +public class SysRoleVO extends SysRoleDO { + /** + * 角色相关的人数 + */ + private Long personNums; + /** + * 用户 + */ + private List enterpriseDOs; + /** + * 角色下拥有的权限 + */ + private List sysMenuDOs; + /** + * 角色是否可删除 + */ + private Boolean delete=true; + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/context/PartnerUserHolder.java b/coolstore-partner-service/src/main/java/com/cool/store/context/PartnerUserHolder.java index f0562e041..ffb5e9ca2 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/context/PartnerUserHolder.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/context/PartnerUserHolder.java @@ -12,7 +12,7 @@ public class PartnerUserHolder { private static final ThreadLocal contextHolder = new ThreadLocal(); public static PartnerUserInfoVO getUser() { - String userStr = contextHolder.get(); + String userStr = contextHolder.get(); if (StringUtils.isNotBlank(userStr)) { return JSON.parseObject(userStr, PartnerUserInfoVO.class); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/http/WechatRest.java b/coolstore-partner-service/src/main/java/com/cool/store/http/WechatRest.java new file mode 100644 index 000000000..5160cf538 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/http/WechatRest.java @@ -0,0 +1,123 @@ +package com.cool.store.http; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.wx.CodeSessionDTO; +import com.cool.store.dto.wx.MiniAppUrlLinkDTO; +import com.cool.store.dto.wx.MiniAppUrlLinkReqDTO; +import com.cool.store.dto.wx.PhoneInfoDTO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mq.util.HttpRestTemplateService; +import com.cool.store.utils.RedisUtilPool; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; + +/** + * @author zhangchenbiao + * @FileName: WechatRest + * @Description:微信api + * @date 2023-05-29 14:49 + */ +@Slf4j +@Service +public class WechatRest { + + @Resource + private RedisUtilPool redisUtilPool; + + @Resource + private HttpRestTemplateService httpRestTemplateService; + + /** + * 小程序Token 地址 + */ + String ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"; + /** + * 获取手机号码 地址 + */ + String GET_USERPHONENUMBER = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s"; + + String GET_MINIAPP_URL_LINK = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=%s"; + + + public CodeSessionDTO miniProgramJsCodeSession(String appId, String secret, String jsCode){ + log.info("WechatRest#miniProgramJsCodeSession, jsCode:{}", jsCode); + String url = "https://api.weixin.qq.com/sns/jscode2session"; + HashMap requestMap = new HashMap(); + requestMap.put("appid", appId); + requestMap.put("secret", secret); + requestMap.put("js_code", jsCode); + requestMap.put("grant_type","authorization_code"); + try { + String responseStr = httpRestTemplateService.getForObject(url, String.class ,requestMap); + log.info("WechatRest#miniProgramJsCodeSession, url:{}, response:{}", url, responseStr); + if(StringUtils.isNotBlank(responseStr)){ + return JSONObject.parseObject(responseStr, CodeSessionDTO.class); + } + } catch (Exception e) { + log.info("调用微信服务异常{}", e); + throw new ServiceException(ErrorCodeEnum.WX_SERVICE_ERROR); + } + return null; + } + + public String getAccessToken(String appId, String secret) { + String cacheAccessToken = "wechat_mini_" + appId; + String accessToken = redisUtilPool.getString(cacheAccessToken); + if (StringUtils.isNotBlank(accessToken)) { + return accessToken; + } + String reqUrl = String.format(ACCESS_TOKEN, appId, secret); + try { + JSONObject jsonObject = httpRestTemplateService.getForObject(reqUrl, JSONObject.class, new HashMap()); + log.info("WechatRest#getAccessToken, reqUrl:{}, response:{}", reqUrl, JSONObject.toJSONString(jsonObject)); + String token = jsonObject.getString("access_token"); + if (StringUtils.isBlank(token)) { + throw new ServiceException(ErrorCodeEnum.GET_ACCESSTOKEN_ERROR); + } + redisUtilPool.setString(cacheAccessToken, token, 7000); + return token; + } catch (Exception e) { + log.error("获取微信小程序token异常", e); + } + return null; + } + + + public PhoneInfoDTO getUserPhoneNumber(String code, String accessToken){ + String reqUrl = String.format(GET_USERPHONENUMBER, accessToken); + HashMap requestMap = new HashMap(); + requestMap.put("code", code); + String responseStr = null; + try { + responseStr = httpRestTemplateService.postForObject(reqUrl, requestMap, String.class); + log.info("WechatRest#getUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, responseStr); + if(StringUtils.isNotBlank(responseStr)){ + return JSONObject.parseObject(responseStr, PhoneInfoDTO.class); + } + } catch (Exception e) { + log.error("获取手机号异常", e); + } + return null; + } + + public MiniAppUrlLinkDTO getMiniAppUrlLink(String accessToken, MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO){ + String reqUrl = String.format(GET_MINIAPP_URL_LINK, accessToken); + String responseStr = null; + try { + responseStr = httpRestTemplateService.postForObject(reqUrl, miniAppUrlLinkReqDTO, String.class); + log.info("WechatRest#getUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, responseStr); + if(StringUtils.isNotBlank(responseStr)){ + return JSONObject.parseObject(responseStr, MiniAppUrlLinkDTO.class); + } + } catch (Exception e) { + log.error("获取手机号异常", e); + } + return null; + } + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java index 9e38eca05..6418f1100 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java @@ -1,5 +1,8 @@ package com.cool.store.service; +import com.cool.store.dto.wx.MiniAppUrlLinkReqDTO; +import com.cool.store.dto.wx.MiniProgramLoginDTO; +import com.cool.store.request.MobileUpdateRequest; import com.cool.store.vo.PartnerUserInfoVO; /** @@ -10,15 +13,15 @@ import com.cool.store.vo.PartnerUserInfoVO; */ public interface WechatMiniAppService { -// PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param); -// -// String getUserPhoneNumber(String mobileCode); -// -// String updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO); -// + PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param); + + String getUserPhoneNumber(String mobileCode); + + String updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO); + PartnerUserInfoVO getUserInfo(String mobile, String openId); -// -// String getMiniAppUrl(); -// -// String getMiniAppUrlLink(MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO); + + String getMiniAppUrl(); + + String getMiniAppUrlLink(MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java index 72018181e..166a1f829 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java @@ -4,26 +4,24 @@ import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; +import com.cool.store.dto.wx.*; import com.cool.store.entity.*; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.UserChannelEnum; -import com.cool.store.enums.UserPlatformTypeEnum; import com.cool.store.exception.ServiceException; +import com.cool.store.http.WechatRest; +import com.cool.store.request.MobileUpdateRequest; import com.cool.store.service.WechatMiniAppService; -import com.cool.store.utils.AesUtil; import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.UUIDUtils; import com.cool.store.vo.PartnerUserInfoVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.MessageFormat; -import java.util.Date; -import java.util.Objects; /** * @author zhangchenbiao @@ -35,26 +33,14 @@ import java.util.Objects; @Service public class WechatMiniAppServiceImpl implements WechatMiniAppService { -// @Resource -// private RedisUtilPool redisUtilPool; -// @Resource -// private WechatRest wechatRest; -// @Resource -// private HyPartnerUserInfoDAO hyPartnerUserInfoDAO; -// @Resource -// private HyPartnerUserPlatformBindDAO hyPartnerUserPlatformBindDAO; -// @Resource -// private HyPartnerLineInfoDAO hyPartnerLineInfoDAO; -// @Resource -// HyOpenAreaInfoDAO hyOpenAreaInfoDAO; -// @Resource -// HyPartnerBaseInfoDAO hyPartnerBaseInfoDAO; -// @Resource -// HyPhoneLocationService hyPhoneLocationService; -// -// @Autowired -// private HyPartnerUserChannelMapper hyPartnerUserChannelMapper; -// + @Resource + private RedisUtilPool redisUtilPool; + @Resource + private WechatRest wechatRest; + @Resource + private HyPartnerUserInfoDAO hyPartnerUserInfoDAO; + @Resource + HyOpenAreaInfoDAO hyOpenAreaInfoDAO; @Value("${weixin.appId}") private String wxAppId; @Value("${weixin.appSecret}") @@ -65,143 +51,119 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { private Integer exhibition; @Value("${recommended.channel.id}") private Integer recommended; -// -// @Override -// public PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param) { -// log.info("miniProgramLogin #param {}", JSONObject.toJSONString(param)); -// PartnerUserInfoVO userInfoVO = new PartnerUserInfoVO(); -// String jsCode = param.getJsCode(); -// String lockKey = "codeSession:" + wxAppId + CommonConstants.MOSAICS + jsCode; -// boolean lock = redisUtilPool.lock(lockKey); -// if (!lock) { -// throw new ServiceException(ErrorCodeEnum.OPERATION_OVER_TIME); -// } -// CodeSessionDTO codeSession = wechatRest.miniProgramJsCodeSession(wxAppId, wxAppSecret, jsCode); -// String openid = codeSession.getOpenid(); -// String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, wxAppId, openid); -// redisUtilPool.setString(sessionCacheKey, codeSession.getSessionKey(), CommonConstants.THREE_DAY_SECONDS); -// String unionId = codeSession.getUnionId(); -// log.info("小程序登录:{}", unionId); -// log.info("sessionKey {}", codeSession.getSessionKey()); -// /* String decryptUser = AesUtil.decryptWechat(codeSession.getSessionKey(), param.getEncryptedData(), param.getIvStr()); -// log.info("解密用户信息:{}", decryptUser); -// MiniProgramUserVO miniProgramUser = JSON.parseObject(decryptUser, MiniProgramUserVO.class); -// if (Objects.isNull(miniProgramUser)) { -// throw new ServiceException(ErrorCodeEnum.GET_WECHAT_USER_INFO_FAIL); -// }*/ -// // 获取小程序token -// String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret); -// // 获取手机号码 -// PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(param.getMobileCode(), accessToken); -// if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ -// -// HyPartnerUserPlatformBindDO hyPartnerUserPlatformBindDO = hyPartnerUserPlatformBindDAO.getByPlatformTypeAndUserId(UserPlatformTypeEnum.WECHAT.getCode(), openid); -// HyPartnerUserInfoDO hyPartnerUserInfoDO = null; -// // 微信未授权过 -// if(hyPartnerUserPlatformBindDO == null){ -// hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); -// if(hyPartnerUserInfoDO != null){ -// HyPartnerUserPlatformBindDO hy = hyPartnerUserPlatformBindDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); -// if (hy!=null){ -// throw new ServiceException(ErrorCodeEnum.MOBILE_WECHAT_EXIST); -// } -// } -// if(hyPartnerUserInfoDO == null){ -// hyPartnerUserInfoDO = new HyPartnerUserInfoDO(); -// hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); -// // hyPartnerUserInfoDO.setUsername(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); -// hyPartnerUserInfoDO.setPartnerId(UUIDUtils.get32UUID()); -// hyPartnerUserInfoDO.setIsWritePartnerKnow(0); -// Integer channelId = null; -// String userChannel = param.getUserChannelEnum(); -// if(StringUtils.isNotEmpty(userChannel)){ -// if(UserChannelEnum.EXHIBITION.getCode().equals(userChannel)){ -// channelId = exhibition; -// }else if(UserChannelEnum.RECOMMENDED.getCode().equals(userChannel)){ -// channelId = recommended; -// }else { -// if (StringUtils.isNumeric(userChannel)) { -// channelId = Integer.valueOf(userChannel); -// HyPartnerUserChannelDO hyPartnerUserChannelDO = hyPartnerUserChannelMapper.selectByChannelId(Long.valueOf(channelId)); -// if (Objects.isNull(hyPartnerUserChannelDO)|| hyPartnerUserChannelDO.getChannelId() == null ) { -// //用户渠道不存在 -// throw new ServiceException(ErrorCodeEnum.USER_CHANNEL_NOT_EXISTS); -// } -// -// } -// } -// } -// hyPartnerUserInfoDO.setUserChannelId(channelId); -// hyPartnerUserInfoDAO.insertSelective(hyPartnerUserInfoDO); -// } -// hyPartnerUserPlatformBindDO = new HyPartnerUserPlatformBindDO(); -// hyPartnerUserPlatformBindDO.setPlatformType(UserPlatformTypeEnum.WECHAT.getCode()); -// hyPartnerUserPlatformBindDO.setPlatformUserId(openid); -// hyPartnerUserPlatformBindDO.setBindTime(new Date()); -// hyPartnerUserPlatformBindDO.setPartnerId(hyPartnerUserInfoDO.getPartnerId()); -// hyPartnerUserPlatformBindDAO.insertSelective(hyPartnerUserPlatformBindDO); -// }else { -// hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerUserPlatformBindDO.getPartnerId()); -// } -// if(!hyPartnerUserInfoDO.getMobile().equals(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ -// throw new ServiceException(ErrorCodeEnum.WECHAT_BIND_OTHER_MOBILE); -// } -// BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); -// HyPartnerLineInfoDO lineInfoDO = hyPartnerLineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); -// if (lineInfoDO != null){ -// userInfoVO.setPartnerLineId(lineInfoDO.getId()); -// userInfoVO.setLineStatus(lineInfoDO.getLineStatus()); -// } -// } -// userInfoVO.setOpenid(openid); -// userInfoVO.setUnionId(unionId); -// return userInfoVO; -// } -// -// public static void main(String[] args) { -// -// } -// -// @Override -// public String getUserPhoneNumber(String mobileCode) { -// // 获取小程序token -// String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret); -// // 获取手机号码 -// PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(mobileCode, accessToken); -// if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ -// return phoneInfoDTO.getPhoneInfo().getPhoneNumber(); -// } -// return null; -// } -// -// @Override -// public String updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO) { -// String newMobile = ""; -// HyPartnerUserInfoDO oldUserInfo = hyPartnerUserInfoDAO.selectByMobile(userInfoVO.getMobile()); -// if (oldUserInfo == null) { -// throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST); -// } -// // 获取小程序token -// String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret); -// // 获取手机号码 -// PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(request.getMobileCode(), accessToken); -// if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ -// newMobile = phoneInfoDTO.getPhoneInfo().getPhoneNumber(); -// if(newMobile.equals(oldUserInfo.getMobile())){ -// return newMobile; -// } -// HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(newMobile); -// if (newUserInfo != null) { -// throw new ServiceException(ErrorCodeEnum.NEW_MOBILE_HAS_EXIST); -// } -// oldUserInfo.setMobile(newMobile); -// hyPartnerUserInfoDAO.updateByPrimaryKeySelective(oldUserInfo); -// //修改意向申请信息中的手机号 -// hyPartnerBaseInfoDAO.updateByPartnerId(null, newMobile, oldUserInfo.getPartnerId()); -// } -// return newMobile; -// } -// + + @Override + public PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param) { + log.info("miniProgramLogin #param {}", JSONObject.toJSONString(param)); + PartnerUserInfoVO userInfoVO = new PartnerUserInfoVO(); + String jsCode = param.getJsCode(); + String lockKey = "codeSession:" + wxAppId + CommonConstants.MOSAICS + jsCode; + boolean lock = redisUtilPool.lock(lockKey); + if (!lock) { + throw new ServiceException(ErrorCodeEnum.OPERATION_OVER_TIME); + } + CodeSessionDTO codeSession = wechatRest.miniProgramJsCodeSession(wxAppId, wxAppSecret, jsCode); + String openid = codeSession.getOpenid(); + String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, wxAppId, openid); + redisUtilPool.setString(sessionCacheKey, codeSession.getSessionKey(), CommonConstants.THREE_DAY_SECONDS); + String unionId = codeSession.getUnionId(); + log.info("小程序登录:{}", unionId); + log.info("sessionKey {}", codeSession.getSessionKey()); + /* String decryptUser = AesUtil.decryptWechat(codeSession.getSessionKey(), param.getEncryptedData(), param.getIvStr()); + log.info("解密用户信息:{}", decryptUser); + MiniProgramUserVO miniProgramUser = JSON.parseObject(decryptUser, MiniProgramUserVO.class); + if (Objects.isNull(miniProgramUser)) { + throw new ServiceException(ErrorCodeEnum.GET_WECHAT_USER_INFO_FAIL); + }*/ + // 获取小程序token + String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret); + // 获取手机号码 + PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(param.getMobileCode(), accessToken); + if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ + HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByOpenid(openid); + if( hyPartnerUserInfoDO != null && !hyPartnerUserInfoDO.getMobile().equals(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ + throw new ServiceException(ErrorCodeEnum.WECHAT_BIND_OTHER_MOBILE); + } + // 微信未授权过 + if(hyPartnerUserInfoDO == null){ + hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); + if(hyPartnerUserInfoDO != null && StringUtils.isNotBlank(hyPartnerUserInfoDO.getOpenid()) && !openid.equals(hyPartnerUserInfoDO.getOpenid())){ + throw new ServiceException(ErrorCodeEnum.MOBILE_WECHAT_EXIST); + } + if(hyPartnerUserInfoDO == null){ + hyPartnerUserInfoDO = new HyPartnerUserInfoDO(); + hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); + hyPartnerUserInfoDO.setOpenid(openid); + hyPartnerUserInfoDO.setPartnerId(UUIDUtils.get32UUID()); + hyPartnerUserInfoDO.setIsWritePartnerKnow(0); + Integer channelId = null; + String userChannel = param.getUserChannelEnum(); + if(StringUtils.isNotEmpty(userChannel)){ + if(UserChannelEnum.EXHIBITION.getCode().equals(userChannel)){ + channelId = exhibition; + }else if(UserChannelEnum.RECOMMENDED.getCode().equals(userChannel)){ + channelId = recommended; + }else { + if (StringUtils.isNumeric(userChannel)) { + channelId = Integer.valueOf(userChannel); + } + } + } + hyPartnerUserInfoDO.setUserChannelId(channelId); + hyPartnerUserInfoDAO.insertSelective(hyPartnerUserInfoDO); + }else { + hyPartnerUserInfoDO.setOpenid(openid); + hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO); + } + } + BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); + } + userInfoVO.setOpenid(openid); + userInfoVO.setUnionId(unionId); + return userInfoVO; + } + + + @Override + public String getUserPhoneNumber(String mobileCode) { + // 获取小程序token + String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret); + // 获取手机号码 + PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(mobileCode, accessToken); + if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ + return phoneInfoDTO.getPhoneInfo().getPhoneNumber(); + } + return null; + } + + @Override + public String updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO) { + String newMobile = ""; + HyPartnerUserInfoDO oldUserInfo = hyPartnerUserInfoDAO.selectByMobile(userInfoVO.getMobile()); + if (oldUserInfo == null) { + throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST); + } + // 获取小程序token + String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret); + // 获取手机号码 + PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(request.getMobileCode(), accessToken); + if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){ + newMobile = phoneInfoDTO.getPhoneInfo().getPhoneNumber(); + if(newMobile.equals(oldUserInfo.getMobile())){ + return newMobile; + } + HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(newMobile); + if (newUserInfo != null) { + throw new ServiceException(ErrorCodeEnum.NEW_MOBILE_HAS_EXIST); + } + oldUserInfo.setMobile(newMobile); + hyPartnerUserInfoDAO.updateByPrimaryKeySelective(oldUserInfo); + //修改意向申请信息中的手机号 + // hyPartnerBaseInfoDAO.updateByPartnerId(null, newMobile, oldUserInfo.getPartnerId()); + } + return newMobile; + } + @Override public PartnerUserInfoVO getUserInfo(String mobile, String openId) { PartnerUserInfoVO userInfoVO = new PartnerUserInfoVO(); @@ -211,37 +173,35 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { userInfoVO.setPartnerId(""); return userInfoVO; } -// HyPartnerUserPlatformBindDO hyPartnerUserPlatformBindDO = hyPartnerUserPlatformBindDAO.getByPlatformTypeAndUserId(UserPlatformTypeEnum.WECHAT.getCode(), openId); -// if(hyPartnerUserPlatformBindDO != null){ -// HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerUserPlatformBindDO.getPartnerId()); -// BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); -// userInfoVO.setOpenid(hyPartnerUserPlatformBindDO.getPlatformUserId()); -// if(StringUtils.isNotBlank(hyPartnerUserInfoDO.getWantShopArea())){ -// HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea())); -// userInfoVO.setWantShopAreaName(hyOpenAreaInfoDO.getAreaPath().replace("/", " ").trim()); -// } -// HyPartnerLineInfoDO lineInfoDO = hyPartnerLineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); -// if (lineInfoDO != null){ -// userInfoVO.setPartnerLineId(lineInfoDO.getId()); -// } -// } + HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByOpenid(openId); + if(hyPartnerUserInfoDO != null){ + BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); + if(StringUtils.isNotBlank(hyPartnerUserInfoDO.getWantShopArea())){ + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea())); + userInfoVO.setWantShopAreaName(hyOpenAreaInfoDO.getAreaPath().replace("/", " ").trim()); + } + /*HyPartnerLineInfoDO lineInfoDO = hyPartnerLineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); + if (lineInfoDO != null){ + userInfoVO.setPartnerLineId(lineInfoDO.getId()); + }*/ + } return userInfoVO; } -// -// @Override -// public String getMiniAppUrl() { -// MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO = new MiniAppUrlLinkReqDTO(); -// return getMiniAppUrlLink(miniAppUrlLinkReqDTO); -// } -// -// @Override -// public String getMiniAppUrlLink(MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO) { -// String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret); -// MiniAppUrlLinkDTO miniAppUrlLink = wechatRest.getMiniAppUrlLink(accessToken, miniAppUrlLinkReqDTO); -// if (miniAppUrlLink != null){ -// return miniAppUrlLink.getUrlLink(); -// } -// return null; -// } + + @Override + public String getMiniAppUrl() { + MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO = new MiniAppUrlLinkReqDTO(); + return getMiniAppUrlLink(miniAppUrlLinkReqDTO); + } + + @Override + public String getMiniAppUrlLink(MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO) { + String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret); + MiniAppUrlLinkDTO miniAppUrlLink = wechatRest.getMiniAppUrlLink(accessToken, miniAppUrlLinkReqDTO); + if (miniAppUrlLink != null){ + return miniAppUrlLink.getUrlLink(); + } + return null; + } } diff --git a/coolstore-partner-webb/src/main/resources/application.properties b/coolstore-partner-webb/src/main/resources/application.properties index fbe8b17a7..1126f124c 100644 --- a/coolstore-partner-webb/src/main/resources/application.properties +++ b/coolstore-partner-webb/src/main/resources/application.properties @@ -50,3 +50,4 @@ server.connection-timeout=18000000 server.tomcat.basedir=/tmp/tomcat/partner-b log4j2.formatMsgNoLookups=true +mybatis.configuration.variables.enterpriseId=e17cd2dc350541df8a8b0af9bd27f77d \ No newline at end of file diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/PartnerCWebApplication.java b/coolstore-partner-webc/src/main/java/com/cool/store/PartnerCWebApplication.java index 684005cae..b52286b3c 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/PartnerCWebApplication.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/PartnerCWebApplication.java @@ -7,7 +7,6 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; import org.springframework.scheduling.annotation.EnableAsync; diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java new file mode 100644 index 000000000..7a8caa82f --- /dev/null +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java @@ -0,0 +1,57 @@ +package com.cool.store.controller; + +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.dto.wx.MiniProgramLoginDTO; +import com.cool.store.request.MobileUpdateRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.WechatMiniAppService; +import com.cool.store.vo.PartnerUserInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * @author zhangchenbiao + * @FileName: MiniProgramAppController + * @Description: + * @date 2023-05-29 14:28 + */ + +@Api(tags = "微信小程序app接口") +@RestController +@RequestMapping({"/v1/partnerManage/miniProgram" }) +public class MiniProgramAppController { + + @Resource + private WechatMiniAppService wechatMiniAppService; + + @ApiOperation("小程序登录") + @PostMapping("/login") + public ResponseResult login(@RequestBody @Valid MiniProgramLoginDTO param) { + PartnerUserInfoVO userInfoVO = wechatMiniAppService.miniProgramLogin(param); + return ResponseResult.success(userInfoVO); + } + + @ApiOperation("获取手机号") + @GetMapping("/getUserPhoneNumber") + public ResponseResult getUserPhoneNumber(@RequestParam(value = "mobileCode",required = true)String mobileCode) { + return ResponseResult.success(wechatMiniAppService.getUserPhoneNumber(mobileCode)); + } + + @ApiOperation("更新手机号") + @PostMapping("/updateUserPhoneNumber") + public ResponseResult updateUserPhoneNumber(@RequestBody @Valid MobileUpdateRequest request) { + PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser(); + return ResponseResult.success(wechatMiniAppService.updateUserPhoneNumber(request, userInfoVO)); + } + + @ApiOperation("根据mobile和openId获取用户信息") + @GetMapping("/getUserInfo") + public ResponseResult getUserInfo(){ + PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser(); + return ResponseResult.success(userInfoVO); + } +} diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/TestController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/TestController.java new file mode 100644 index 000000000..8a11a8ccc --- /dev/null +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/TestController.java @@ -0,0 +1,79 @@ +package com.cool.store.controller; + +import com.cool.store.dao.*; +import com.cool.store.entity.*; +import com.cool.store.response.ResponseResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@Slf4j +@RestController +@RequestMapping("/test") +public class TestController { + + @Resource + private EnterpriseUserDAO enterpriseUserDAO; + + @Resource + private EnterpriseUserRoleDao enterpriseUserRoleDao; + + @Resource + private HyPartnerUserInfoDAO hyPartnerUserInfoDAO; + + @Resource + private RegionDao regionDao; + + @Resource + private SysRoleDao sysRoleDao; + + @Resource + private UserRegionMappingDAO userRegionMappingDAO; + + @GetMapping("/getUserInfo") + public ResponseResult getUserInfo(@RequestParam("userId")String userId){ + EnterpriseUserDO enterpriseUser = enterpriseUserDAO.getUserInfoById(userId); + return ResponseResult.success(enterpriseUser); + } + + @GetMapping("/getUserInfoByUserIds") + public ResponseResult getUserInfoByUserIds(@RequestParam(value = "userIdList", required = false) List userIdList){ + List enterpriseUserDOList = enterpriseUserDAO.getUserInfoByUserIds(userIdList); + return ResponseResult.success(enterpriseUserDOList); + } + + @GetMapping("/getUserRoleIds") + public ResponseResult getUserRoleIds(@RequestParam("userId")String userId){ + List roleIdList = enterpriseUserRoleDao.getUserRoleIds(userId); + return ResponseResult.success(roleIdList); + } + + @GetMapping("/selectByMobile") + public ResponseResult selectByMobile(@RequestParam("mobile")String mobile){ + HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(mobile); + return ResponseResult.success(hyPartnerUserInfoDO); + } + + @GetMapping("/getRegionById") + public ResponseResult getRegionById(@RequestParam("regionId")Long regionId){ + RegionDO regionDO = regionDao.getRegionById(regionId); + return ResponseResult.success(regionDO); + } + + @GetMapping("/selectRoleByRoleIds") + public ResponseResult selectRoleByRoleIds(@RequestParam("roleIds")List roleIds){ + List sysRoleDOList = sysRoleDao.selectRoleByRoleIds(roleIds); + return ResponseResult.success(sysRoleDOList); + } + + @GetMapping("/listUserRegionMappingByUserId") + public ResponseResult listUserRegionMappingByUserId(@RequestParam("userIds")List userIds){ + List userRegionMappingDOList = userRegionMappingDAO.listUserRegionMappingByUserId(userIds); + return ResponseResult.success(userRegionMappingDOList); + } +} diff --git a/coolstore-partner-webc/src/main/resources/application-local.properties b/coolstore-partner-webc/src/main/resources/application-local.properties index e02a12cc7..f0e966910 100644 --- a/coolstore-partner-webc/src/main/resources/application-local.properties +++ b/coolstore-partner-webc/src/main/resources/application-local.properties @@ -1,8 +1,8 @@ #mysql config -default.datasource.url=jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_hy?useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true -default.datasource.username=hsay -default.datasource.password=Z3J7xBbgouMD +default.datasource.url=jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_36?useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true +default.datasource.username=coolstore +default.datasource.password=CSCErYcXniNYm7bT #redis spring.redis.host=tstore-coolcollege.redis.rds.aliyuncs.com diff --git a/coolstore-partner-webc/src/main/resources/application.properties b/coolstore-partner-webc/src/main/resources/application.properties index fbe8b17a7..080729f1d 100644 --- a/coolstore-partner-webc/src/main/resources/application.properties +++ b/coolstore-partner-webc/src/main/resources/application.properties @@ -50,3 +50,4 @@ server.connection-timeout=18000000 server.tomcat.basedir=/tmp/tomcat/partner-b log4j2.formatMsgNoLookups=true +mybatis.configuration.variables.enterpriseId=e17cd2dc350541df8a8b0af9bd27f77d