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
index 56c3b18f3..90ae46db8 100644
--- 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
@@ -60,4 +60,21 @@ public class SysRoleDao {
return sysRoleDOS.stream().collect(Collectors.toMap(k->k.getId(), v->v.getRoleName(), (k1, k2)->k1));
}
+ /**
+ * 查询优先级最高的角色
+ * @param userId 用户id
+ * @return 角色
+ */
+ public SysRoleDO getHighestPrioritySysRoleDoByUserId(String userId) {
+ return sysRoleMapper.getHighestPrioritySysRoleDoByUserId(userId);
+ }
+
+ /**
+ * 根据角色枚举查询角色
+ * @param roleEnum 角色枚举
+ * @return 角色
+ */
+ public SysRoleDO getRoleByRoleEnum(String roleEnum) {
+ return sysRoleMapper.getRoleByRoleEnum(roleEnum);
+ }
}
diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/menu/MiniMenuConfigDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/menu/MiniMenuConfigDAO.java
new file mode 100644
index 000000000..d4e44b2aa
--- /dev/null
+++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/menu/MiniMenuConfigDAO.java
@@ -0,0 +1,31 @@
+package com.cool.store.dao.menu;
+
+import com.cool.store.entity.menu.MiniMenuConfigDO;
+import com.cool.store.mapper.menu.MiniMenuConfigMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ *
+ * 小程序菜单配置
+ *
+ *
+ * @author wangff
+ * @since 2025/10/31
+ */
+@Repository
+@RequiredArgsConstructor
+public class MiniMenuConfigDAO {
+ private final MiniMenuConfigMapper miniMenuConfigMapper;
+
+ /**
+ * 根据角色id查询
+ * @param roleId 角色id
+ * @return 菜单配置列表
+ */
+ public List getListByRoleId(Long roleId) {
+ return miniMenuConfigMapper.select(MiniMenuConfigDO.builder().roleId(roleId).build());
+ }
+}
diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/menu/MiniMenuDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/menu/MiniMenuDAO.java
new file mode 100644
index 000000000..3c3f33742
--- /dev/null
+++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/menu/MiniMenuDAO.java
@@ -0,0 +1,34 @@
+package com.cool.store.dao.menu;
+
+import com.cool.store.entity.menu.MiniMenuDO;
+import com.cool.store.mapper.menu.MiniMenuMapper;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Repository;
+import tk.mybatis.mapper.entity.Example;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ *
+ * 小程序菜单DAO
+ *
+ *
+ * @author wangff
+ * @since 2025/11/28
+ */
+@Repository
+@RequiredArgsConstructor
+public class MiniMenuDAO {
+ private final MiniMenuMapper miniMenuMapper;
+
+ public List getByIds(List ids) {
+ if (CollectionUtils.isEmpty(ids)) {
+ return Collections.emptyList();
+ }
+ Example example = new Example(MiniMenuDO.class);
+ example.createCriteria().andIn("id", ids);
+ return miniMenuMapper.selectByExample(example);
+ }
+}
diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/menu/MiniMenuConfigMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/menu/MiniMenuConfigMapper.java
new file mode 100644
index 000000000..a7d59a6ac
--- /dev/null
+++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/menu/MiniMenuConfigMapper.java
@@ -0,0 +1,7 @@
+package com.cool.store.mapper.menu;
+
+import com.cool.store.entity.menu.MiniMenuConfigDO;
+import tk.mybatis.mapper.common.Mapper;
+
+public interface MiniMenuConfigMapper extends Mapper {
+}
\ No newline at end of file
diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/menu/MiniMenuMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/menu/MiniMenuMapper.java
new file mode 100644
index 000000000..e5e72cc4b
--- /dev/null
+++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/menu/MiniMenuMapper.java
@@ -0,0 +1,7 @@
+package com.cool.store.mapper.menu;
+
+import com.cool.store.entity.menu.MiniMenuDO;
+import tk.mybatis.mapper.common.Mapper;
+
+public interface MiniMenuMapper extends Mapper {
+}
\ No newline at end of file
diff --git a/coolstore-partner-dao/src/main/resources/mapper/menu/MiniMenuConfigMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/menu/MiniMenuConfigMapper.xml
new file mode 100644
index 000000000..1857cb167
--- /dev/null
+++ b/coolstore-partner-dao/src/main/resources/mapper/menu/MiniMenuConfigMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coolstore-partner-dao/src/main/resources/mapper/menu/MiniMenuMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/menu/MiniMenuMapper.xml
new file mode 100644
index 000000000..72065b4a8
--- /dev/null
+++ b/coolstore-partner-dao/src/main/resources/mapper/menu/MiniMenuMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/menu/MiniMenuConfigDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/menu/MiniMenuConfigDO.java
new file mode 100644
index 000000000..c0c560dc7
--- /dev/null
+++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/menu/MiniMenuConfigDO.java
@@ -0,0 +1,34 @@
+package com.cool.store.entity.menu;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.*;
+
+/**
+ * 小程序菜单配置
+ */
+@Table(name = "zxjp_mini_menu_config")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class MiniMenuConfigDO {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ /**
+ * 角色id
+ */
+ @Column(name = "role_id")
+ private Long roleId;
+
+ /**
+ * 菜单
+ */
+ @Column(name = "menu_id")
+ private Long menuId;
+}
\ No newline at end of file
diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/menu/MiniMenuDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/menu/MiniMenuDO.java
new file mode 100644
index 000000000..9642f6786
--- /dev/null
+++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/menu/MiniMenuDO.java
@@ -0,0 +1,26 @@
+package com.cool.store.entity.menu;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+@Table(name = "zxjp_mini_menu")
+@Data
+public class MiniMenuDO {
+ /**
+ * id
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * key
+ */
+ private String menuKey;
+}
\ No newline at end of file
diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/menu/MiniMenuConfigVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/menu/MiniMenuConfigVO.java
new file mode 100644
index 000000000..e2d67f093
--- /dev/null
+++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/menu/MiniMenuConfigVO.java
@@ -0,0 +1,19 @@
+package com.cool.store.vo.menu;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 小程序菜单配置VO
+ *
+ *
+ * @author wangff
+ * @since 2025/10/31
+ */
+@Data
+public class MiniMenuConfigVO {
+
+ @ApiModelProperty("菜单key")
+ private String menuKey;
+}
diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/menu/MiniMenuService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/menu/MiniMenuService.java
new file mode 100644
index 000000000..15637bf03
--- /dev/null
+++ b/coolstore-partner-service/src/main/java/com/cool/store/service/menu/MiniMenuService.java
@@ -0,0 +1,22 @@
+package com.cool.store.service.menu;
+
+import com.cool.store.vo.menu.MiniMenuConfigVO;
+
+import java.util.List;
+
+/**
+ *
+ * 小程序菜单配置
+ *
+ *
+ * @author wangff
+ * @since 2025/10/31
+ */
+public interface MiniMenuService {
+
+ /**
+ * 获取用户小程序菜单配置
+ * @return 小程序菜单配置
+ */
+ List getUserMiniMenu();
+}
diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/menu/impl/MiniMenuServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/menu/impl/MiniMenuServiceImpl.java
new file mode 100644
index 000000000..72eaed992
--- /dev/null
+++ b/coolstore-partner-service/src/main/java/com/cool/store/service/menu/impl/MiniMenuServiceImpl.java
@@ -0,0 +1,88 @@
+package com.cool.store.service.menu.impl;
+
+import cn.hutool.core.collection.CollStreamUtil;
+import com.cool.store.context.PartnerUserHolder;
+import com.cool.store.dao.EnterpriseUserDAO;
+import com.cool.store.dao.SysRoleDao;
+import com.cool.store.dao.menu.MiniMenuConfigDAO;
+import com.cool.store.dao.menu.MiniMenuDAO;
+import com.cool.store.entity.EnterpriseUserDO;
+import com.cool.store.entity.SysRoleDO;
+import com.cool.store.entity.menu.MiniMenuConfigDO;
+import com.cool.store.entity.menu.MiniMenuDO;
+import com.cool.store.enums.AIEnum;
+import com.cool.store.enums.Role;
+import com.cool.store.service.menu.MiniMenuService;
+import com.cool.store.utils.BeanUtil;
+import com.cool.store.vo.PartnerUserInfoVO;
+import com.cool.store.vo.menu.MiniMenuConfigVO;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ *
+ * 小程序菜单配置 服务实现类
+ *
+ *
+ * @author wangff
+ * @since 2025/10/31
+ */
+@Service
+@RequiredArgsConstructor
+public class MiniMenuServiceImpl implements MiniMenuService {
+ private final MiniMenuConfigDAO miniMenuConfigDAO;
+ private final SysRoleDao sysRoleDao;
+ private final EnterpriseUserDAO enterpriseUserDAO;
+ private final MiniMenuDAO miniMenuDAO;
+
+
+ @Override
+ public List getUserMiniMenu() {
+ PartnerUserInfoVO user = PartnerUserHolder.getUser();
+ if (StringUtils.isBlank(user.getMobile())) {
+ return Collections.emptyList();
+ }
+ SysRoleDO highestRole = getHighestRoleByMobile(user.getMobile());
+ if (Objects.isNull(highestRole)) {
+ return Collections.emptyList();
+ }
+ List list = miniMenuConfigDAO.getListByRoleId(highestRole.getId());
+ List menuIds = CollStreamUtil.toList(list, MiniMenuConfigDO::getMenuId);
+ List menuList = miniMenuDAO.getByIds(menuIds);
+ return BeanUtil.toList(menuList, MiniMenuConfigVO.class);
+ }
+
+ /**
+ * 根据手机号查询用户优先级最高的角色
+ * @param mobile 手机号
+ * @return 角色信息
+ */
+ private SysRoleDO getHighestRoleByMobile(String mobile) {
+ if (StringUtils.isBlank(mobile)) {
+ return null;
+ }
+ EnterpriseUserDO userDO = enterpriseUserDAO.selectByMobile(mobile);
+ if (Objects.isNull(userDO)) {
+ return null;
+ }
+ return getHighestRole(userDO.getUserId());
+ }
+
+ /**
+ * 查询当前用户优先级最高的角色
+ * @param userId 用户id
+ * @return 角色信息
+ */
+ private SysRoleDO getHighestRole(String userId) {
+ if(AIEnum.AI_USERID.getCode().equals(userId)){
+ return sysRoleDao.getRoleByRoleEnum(Role.MASTER.getRoleEnum());
+ }
+ return sysRoleDao.getHighestPrioritySysRoleDoByUserId(userId);
+ }
+}
diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniMenuController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniMenuController.java
new file mode 100644
index 000000000..2fd52cf04
--- /dev/null
+++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniMenuController.java
@@ -0,0 +1,35 @@
+package com.cool.store.controller.webc;
+
+import com.cool.store.response.ResponseResult;
+import com.cool.store.service.menu.MiniMenuService;
+import com.cool.store.vo.menu.MiniMenuConfigVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ *
+ * 小程序菜单配置 前端控制器
+ *
+ *
+ * @author wangff
+ * @since 2025/10/31
+ */
+@RestController
+@RequestMapping({"/mini/menu"})
+@Api(tags = "Mini菜单配置")
+@RequiredArgsConstructor
+public class MiniMenuController {
+ private final MiniMenuService miniMenuService;
+
+ @ApiOperation("当前用户菜单配置")
+ @GetMapping("/userConfig")
+ public ResponseResult> getCurrentUserConfig() {
+ return ResponseResult.success(miniMenuService.getUserMiniMenu());
+ }
+}