From 0fb6b9d8d414822668c401a2b507df1fe6d1fa2d Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 16 六月 2025 14:28:08 +0800
Subject: [PATCH] 用户权限管理

---
 framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java |   18 +
 framework/src/main/java/cn/lili/modules/lmk/service/StoreMemberService.java          |    7 
 seller-api/src/main/java/cn/lili/controller/permission/ClerkStoreController.java     |   41 ----
 framework/src/main/java/cn/lili/modules/member/service/StoreRoleService.java         |    2 
 framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreMember.java           |    8 
 framework/src/main/java/cn/lili/modules/lmk/domain/query/CheckClerkMobileQuery.java  |   17 +
 framework/src/main/java/cn/lili/modules/lmk/mapper/StoreMemberMapper.java            |    3 
 framework/src/main/java/cn/lili/modules/member/service/ClerkService.java             |   15 +
 seller-api/src/main/java/cn/lili/controller/permission/StoreRoleController.java      |    2 
 framework/src/main/java/cn/lili/modules/member/entity/vo/ClerkVO.java                |    2 
 framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java     |  145 +++++++++++++++
 buyer-api/src/main/java/cn/lili/controller/lmk/StoreMemberController.java            |   43 ++++
 framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreMemberQuery.java       |    8 
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/CheckClerkPermissionVO.java    |   23 ++
 framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreMemberForm.java         |   10 
 framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreMemberServiceImpl.java |  130 +++++++++----
 framework/src/main/resources/mapper/lmk/StoreMemberMapper.xml                        |   49 ++++-
 17 files changed, 414 insertions(+), 109 deletions(-)

diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/StoreMemberController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/StoreMemberController.java
index 87891a6..6501fb8 100644
--- a/buyer-api/src/main/java/cn/lili/controller/lmk/StoreMemberController.java
+++ b/buyer-api/src/main/java/cn/lili/controller/lmk/StoreMemberController.java
@@ -2,13 +2,26 @@
 
 
 import cn.lili.base.Result;
+import cn.lili.common.enums.ResultUtil;
+import cn.lili.common.security.context.UserContext;
+import cn.lili.common.utils.StringUtils;
+import cn.lili.common.validation.Phone;
+import cn.lili.common.vo.ResultMessage;
+import cn.lili.common.vo.SearchVO;
 import cn.lili.group.Add;
 import cn.lili.group.Update;
 import cn.lili.modules.lmk.domain.form.StoreMemberForm;
+import cn.lili.modules.lmk.domain.query.CheckClerkMobileQuery;
 import cn.lili.modules.lmk.domain.query.StoreMemberQuery;
 import cn.lili.modules.lmk.service.StoreMemberService;
 import cn.lili.modules.member.entity.dos.Member;
+import cn.lili.modules.member.entity.dos.StoreDepartment;
+import cn.lili.modules.member.entity.vo.StoreDepartmentVO;
+import cn.lili.modules.member.service.ClerkService;
 import cn.lili.modules.member.service.MemberService;
+import cn.lili.modules.member.service.StoreDepartmentService;
+import cn.lili.modules.member.service.StoreRoleService;
+import cn.lili.mybatis.util.PageUtil;
 import org.springframework.validation.annotation.Validated;
 import lombok.RequiredArgsConstructor;
 import java.util.List;
@@ -33,6 +46,23 @@
     private final StoreMemberService storeMemberService;
 
     private final MemberService memberService;
+    private final StoreRoleService storeRoleService;
+    private final StoreDepartmentService storeDepartmentService;
+    private final ClerkService clerkService;
+
+    @GetMapping
+    @RequestMapping("/getStoreRoleList")
+    public Result getStoreRoleList(){
+        return Result.ok().data(storeRoleService.getSelectList());
+    }
+
+    @PostMapping("/check")
+    @ApiOperation(value = "妫�娴嬫墜鏈哄彿鐮佹湁鏁堟��")
+    public Result check(@RequestBody CheckClerkMobileQuery checkClerkMobileQuery) {
+        System.out.println(checkClerkMobileQuery);
+        return Result.ok().data(clerkService.checkClerk(checkClerkMobileQuery.getMemberId(),checkClerkMobileQuery.getMobile()));
+    }
+
 
     @PostMapping
     @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
@@ -44,6 +74,13 @@
     @ApiOperation(value = "閲嶇疆瀵嗙爜", notes = "閲嶇疆瀵嗙爜")
     public Result restPassword(@PathVariable String id){
         return memberService.resetPassword(id);
+    }
+    @GetMapping("/store/department")
+    @ApiOperation(value = "鑾峰彇鏍戠姸缁撴瀯")
+    public Result getByPage(StoreDepartment entity, SearchVO searchVo) {
+        entity.setStoreId(UserContext.getCurrentUser().getStoreId());
+        return Result.ok().data(storeDepartmentService.tree(PageUtil.initWrapper(entity, searchVo)));
+
     }
 
     @PutMapping
@@ -70,6 +107,12 @@
         return storeMemberService.page(query);
     }
 
+    @GetMapping("/checkPermission")
+    @ApiOperation(value = "鑾峰緱褰撳墠鐢ㄦ埛鐨勫簵鍛樻潈闄�", notes = "鑾峰緱褰撳墠鐢ㄦ埛鐨勫簵鍛樻潈闄�")
+    public Result checkDelAndUpdatePermission(){
+        return storeMemberService.checkDelAndUpdatePermission();
+    }
+
     @GetMapping("/{id}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
     public Result detail(@PathVariable("id") String id) {
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreMember.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreMember.java
index c024434..aa3d72a 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreMember.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreMember.java
@@ -22,14 +22,8 @@
     /** 鐪熷疄濮撳悕 */
     private String realName;
 
-    @TableField("role")
-    /** 瑙掕壊 */
-    private String role;
-
     @TableField("member_id")
     /** 浼氬憳鐢ㄦ埛id */
     private String memberId;
-    /** 鍟嗘埛id */
-    @TableField("store_id")
-    private String storeId;
+
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreMemberForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreMemberForm.java
index 8a1e5d3..5b334dc 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreMemberForm.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreMemberForm.java
@@ -12,6 +12,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 鐢ㄦ埛鏉冮檺绠$悊(鍟嗗)琛ㄥ崟
  *
@@ -33,11 +35,15 @@
     @ApiModelProperty("瀵嗙爜")
     private String password;
 
+    @ApiModelProperty("鏄惁鏄鐞嗗憳")
+    private Boolean isSuper;
 
-    @NotBlank(message = "瑙掕壊涓嶈兘涓虹┖", groups = {Add.class, Update.class})
     @ApiModelProperty("瑙掕壊Json瀛楃涓�")
-    private String role;
 
+    private List<String> role;
+
+    @ApiModelProperty("閮ㄩ棬id")
+    private String departmentId;
 
     public static StoreMember getEntityByForm(@NonNull StoreMemberForm form, StoreMember entity) {
         if(entity == null) {
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/CheckClerkMobileQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/CheckClerkMobileQuery.java
new file mode 100644
index 0000000..cb0f971
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/CheckClerkMobileQuery.java
@@ -0,0 +1,17 @@
+package cn.lili.modules.lmk.domain.query;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 搴楀憳鐢佃瘽鏈夋晥鎬ф娴嬪弬鏁�
+ *
+ */
+@Data
+@ApiModel(value = "搴楀憳鐢佃瘽鏈夋晥鎬ф娴嬪弬鏁�", description = "搴楀憳鐢佃瘽鏈夋晥鎬ф娴嬪弬鏁�")
+public class CheckClerkMobileQuery {
+
+    private  String mobile;
+
+    private  String memberId;
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreMemberQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreMemberQuery.java
index b5f9686..da36965 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreMemberQuery.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreMemberQuery.java
@@ -14,9 +14,15 @@
 @ApiModel(value = "LmkUserPermissions鏌ヨ鍙傛暟", description = "鐢ㄦ埛鏉冮檺绠$悊(鍟嗗)鏌ヨ鍙傛暟")
 public class StoreMemberQuery extends AbsQuery {
 
-    /** 鐪熷疄濮撳悕*/
+    /** 鐪熷疄濮撳悕 */
     private String realName;
     /** 搴楅摵id */
     private String storeId;
+    /** 鐢佃瘽 */
+    private String mobile;
+    /** 閮ㄩ棬id*/
+    private String departmentId;
+
+
 }
 
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CheckClerkPermissionVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CheckClerkPermissionVO.java
new file mode 100644
index 0000000..eb2ef70
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CheckClerkPermissionVO.java
@@ -0,0 +1,23 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import lombok.Data;
+
+/**
+ * 搴楀憳鏉冮檺鍝嶅簲瀵硅薄
+ */
+@Data
+public class CheckClerkPermissionVO {
+    /**
+     * 搴楀憳id
+     */
+    private String clerkId;
+    /**
+     * 鏄惁鏄簵涓�
+     */
+    private Boolean isShopkeeper;
+    /**
+     * 鏄惁鏄秴绾х鐞嗗憳
+     */
+    private Boolean isSuper;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/StoreMemberMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/StoreMemberMapper.java
index 23e19c2..5ca3185 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/mapper/StoreMemberMapper.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/StoreMemberMapper.java
@@ -3,6 +3,7 @@
 import cn.lili.modules.lmk.domain.entity.StoreMember;
 import cn.lili.modules.lmk.domain.query.StoreMemberQuery;
 import cn.lili.modules.lmk.domain.vo.StoreMemberVO;
+import cn.lili.modules.member.entity.dto.ClerkQueryDTO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -30,4 +31,6 @@
     */
     IPage getPage(IPage page, @Param("query") StoreMemberQuery query);
 
+    IPage getClerkPage(IPage page, @Param("query") StoreMemberQuery query);
+
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/StoreMemberService.java b/framework/src/main/java/cn/lili/modules/lmk/service/StoreMemberService.java
index 7eb7339..cea27c7 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/StoreMemberService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/StoreMemberService.java
@@ -5,6 +5,7 @@
 import cn.lili.modules.lmk.domain.entity.StoreMember;
 import cn.lili.modules.lmk.domain.form.StoreMemberForm;
 import cn.lili.modules.lmk.domain.query.StoreMemberQuery;
+import cn.lili.modules.member.entity.dto.ClerkQueryDTO;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
@@ -64,4 +65,10 @@
      * @return
      */
     Result all();
+
+    /**
+     * 妫�鏌ョ敤鎴锋潈闄愮鐞嗚兘鍙戝垹闄ゆ垨淇敼鐢ㄦ埛
+     * @return
+     */
+    Result checkDelAndUpdatePermission();
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreMemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreMemberServiceImpl.java
index bc19a15..2555f5d 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreMemberServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreMemberServiceImpl.java
@@ -4,18 +4,23 @@
 
 import cn.lili.common.security.AuthUser;
 import cn.lili.common.security.context.UserContext;
+import cn.lili.common.vo.PageVO;
 import cn.lili.modules.lmk.domain.entity.StoreMember;
 import cn.lili.modules.lmk.domain.form.StoreMemberForm;
 import cn.lili.modules.lmk.domain.query.StoreMemberQuery;
+import cn.lili.modules.lmk.domain.vo.CheckClerkPermissionVO;
 import cn.lili.modules.lmk.domain.vo.StoreMemberVO;
 import cn.lili.modules.lmk.mapper.StoreMemberMapper;
 import cn.lili.modules.lmk.service.StoreMemberService;
+import cn.lili.modules.member.entity.dos.Clerk;
 import cn.lili.modules.member.entity.dos.Member;
-import cn.lili.modules.member.entity.dto.ManagerMemberEditDTO;
-import cn.lili.modules.member.entity.dto.MemberAddDTO;
+import cn.lili.modules.member.entity.dto.*;
+import cn.lili.modules.member.entity.vo.ClerkVO;
+import cn.lili.modules.member.service.ClerkService;
 import cn.lili.modules.member.service.MemberService;
 import cn.lili.utils.PageUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import org.springframework.stereotype.Service;
@@ -24,6 +29,8 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.util.Assert;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -40,6 +47,8 @@
     private final StoreMemberMapper storeMemberMapper;
 
     private final MemberService memberService;
+
+    private final ClerkService clerkService;
     /**
      * 娣诲姞
      * @param form
@@ -47,29 +56,25 @@
      */
     @Override
     public Result add(StoreMemberForm form) {
-        //鎻掑叆鍒扮敤鎴疯〃涓�
-        AuthUser currentUser = UserContext.getCurrentUser();
-        String id = currentUser.getId();
-//        String storeId = currentUser.getStoreId();
-        String storeId = "12312323123";
-        if (id == null || storeId == null) {
-            return Result.error("褰撳墠鐧诲綍璐︽埛鏈粦瀹氬晢鎴锋垨鐢ㄦ埛id鑾峰彇寮傚父");
+       String storeId =UserContext.getCurrentUser().getStoreId();
+        System.out.println(storeId);
+//        storeId = "1376433565247471616"; //娴嬭瘯鐢�
+        if ( storeId == null){
+            return null;
         }
-
-        //鎻掑叆浼氬憳琛�
-        MemberAddDTO addDTO = new MemberAddDTO();
-        addDTO.setMobile(form.getMobile());
-        addDTO.setPassword(form.getPassword());
-        addDTO.setUsername(form.getMobile());
-
-        Member member = memberService.addMember(addDTO);
+        ClerkAddDTO clerkAddDTO = new ClerkAddDTO();
+        clerkAddDTO.setPassword(form.getPassword());
+        clerkAddDTO.setRoles(form.getRole());
+        clerkAddDTO.setUsername(form.getMobile());
+        clerkAddDTO.setMobile(form.getMobile());
+        clerkAddDTO.setDepartmentId(form.getDepartmentId());
+        clerkAddDTO.setIsSuper(form.getIsSuper());
+        Member member = clerkService.addClerkReturnMember(clerkAddDTO);
 
         //鎻掑叆鐢ㄦ埛鏉冮檺琛�
         //id鎻掑叆闂
         StoreMember entity = StoreMemberForm.getEntityByForm(form, null);
         entity.setMemberId(member.getId());
-        entity.setStoreId(storeId);
-
         baseMapper.insert(entity);
         return Result.ok("娣诲姞鎴愬姛");
     }
@@ -81,16 +86,27 @@
      */
     @Override
     public Result update(StoreMemberForm form) {
-        StoreMember entity = baseMapper.selectById(form.getId());
+        ClerkEditDTO clerkEditDTO = new ClerkEditDTO();
+        clerkEditDTO.setId(form.getId());
+        clerkEditDTO.setRoles(form.getRole());
+        clerkEditDTO.setDepartmentId(form.getDepartmentId());
+        clerkEditDTO.setIsSuper(form.getIsSuper());
+        Clerk clerk = clerkService.updateClerk(clerkEditDTO);
+        StoreMember entity = new LambdaQueryChainWrapper<>(baseMapper)
+                .eq(StoreMember::getMemberId,clerk.getMemberId())
+                        .one();
+        if (entity == null){
+            //鎻掑叆
+            entity = new StoreMember();
+            entity.setMemberId(clerk.getMemberId());
+            entity.setRealName(form.getRealName());
+            baseMapper.insert(entity);
+        }else {
+            //淇敼鐪熷疄濮撳悕
+            entity.setRealName(form.getRealName());
 
-        //TODO 鏄惁闇�瑕佸垽鏂瘑鐮佹柊瀵嗙爜
-        //浼氬憳淇敼瀵嗙爜锛岀數璇�
-        memberService.updateMemberPartProperties(entity.getMemberId(),form.getPassword(),form.getMobile());
-
-        //淇敼鐪熷疄濮撳悕
-        entity.setRealName(form.getRealName());
-        entity.setRole(form.getRole());
-        baseMapper.updateById(entity);
+            baseMapper.updateById(entity);
+        }
         return Result.ok("淇敼鎴愬姛");
     }
 
@@ -112,11 +128,15 @@
      */
     @Override
     public Result removeById(String id) {
-        StoreMember entity = baseMapper.selectById(id);
-        memberService.removeById(entity.getMemberId());
-        baseMapper.deleteById(id);
-        //鍚屾椂鍒犻櫎鐢ㄦ埛
+        ClerkVO clerkVO =clerkService.get(id);
+        List<String> ids = new ArrayList<>();
+        ids.add(id);
+        clerkService.deleteClerk(ids);
 
+        baseMapper.delete(new LambdaQueryChainWrapper<>(baseMapper)
+                .eq(StoreMember::getMemberId,clerkVO.getMemberId()));
+        //鍚屾椂鍒犻櫎鐢ㄦ埛
+        // 鐢ㄦ埛瑙掕壊
 
         return Result.ok("鍒犻櫎鎴愬姛");
     }
@@ -128,15 +148,17 @@
      */
     @Override
     public Result page(StoreMemberQuery query) {
-        AuthUser currentUser = UserContext.getCurrentUser();
-//        String storeId = currentUser.getStoreId();
-        String storeId = "12312323123";
+        String storeId = UserContext.getCurrentUser().getStoreId();
+
+        //TODO 涓嶉�氳繃UserContext鑾峰緱搴楅摵id锛岄�氳繃浼氬憳id鏌ヨ鏁版嵁搴撻噷鐨勫晢搴梚d
+//        String storeId = "1376433565247471616";
         if (storeId == null) {
             return Result.error("褰撳墠鐧诲綍璐︽埛鏈粦瀹氬晢鎴锋垨鐢ㄦ埛id鑾峰彇寮傚父");
         }
-        IPage<StoreMemberVO> page = PageUtil.getPage(query, StoreMemberVO.class);
+        System.out.println(query.getPageNumber());
+        IPage<ClerkVO> page = PageUtil.getPage(query, ClerkVO.class);
         query.setStoreId(storeId);
-        baseMapper.getPage(page, query);
+        baseMapper.getClerkPage(page, query);
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
@@ -147,11 +169,17 @@
      */
     @Override
     public Result detail(String id) {
-        StoreMemberVO vo = baseMapper.getById(id);
-        //瀵嗙爜鏄惁闇�瑕佽В瀵�
+        ClerkVO clerkVO = clerkService.get(id);
+        StoreMember storeMember = new LambdaQueryChainWrapper<>(baseMapper)
+                .eq(StoreMember::getMemberId, clerkVO.getMemberId())
+                .one();
+        if (storeMember != null) {
+            clerkVO.setRealName(storeMember.getRealName());
+        }
 
-        Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
-        return Result.ok().data(vo);
+        //瀵嗙爜鏄惁闇�瑕佽В瀵�
+        Assert.notNull(clerkVO, "璁板綍涓嶅瓨鍦�");
+        return Result.ok().data(clerkVO);
     }
 
     /**
@@ -166,4 +194,24 @@
                 .collect(Collectors.toList());
         return Result.ok().data(vos);
     }
+    // 鑾峰緱褰撳墠璐﹀彿鐨勭敤鎴峰簵鍛樹俊鎭�
+    public ClerkVO getUserContextClerkInfo(){
+        String id = UserContext.getCurrentUser().getId();
+        Clerk clerk = clerkService.getClerkByMemberId(id);
+        if (clerk == null){
+            throw new RuntimeException("鑾峰彇搴楀憳淇℃伅寮傚父");
+        }
+        return clerkService.get(clerk.getId());
+    }
+
+    @Override
+    public Result checkDelAndUpdatePermission() {
+
+        ClerkVO clerkVO = getUserContextClerkInfo();
+        CheckClerkPermissionVO permissionVO  = new CheckClerkPermissionVO();
+        permissionVO.setClerkId(clerkVO.getId());
+        permissionVO.setIsShopkeeper(clerkVO.getShopkeeper());
+        permissionVO.setIsSuper(clerkVO.getIsSuper());
+        return Result.ok().data(permissionVO);
+    }
 }
diff --git a/framework/src/main/java/cn/lili/modules/member/entity/vo/ClerkVO.java b/framework/src/main/java/cn/lili/modules/member/entity/vo/ClerkVO.java
index 6a695b2..9b662ff 100644
--- a/framework/src/main/java/cn/lili/modules/member/entity/vo/ClerkVO.java
+++ b/framework/src/main/java/cn/lili/modules/member/entity/vo/ClerkVO.java
@@ -36,6 +36,8 @@
     @ApiModelProperty(value = "鐢ㄦ埛鎷ユ湁鐨勬潈闄�")
     private List<StoreMenu> menus;
 
+    /** 鐪熷疄濮撳悕*/
+    private String realName;
 
     public ClerkVO(Clerk clerk) {
         BeanUtil.copyProperties(clerk, this);
diff --git a/framework/src/main/java/cn/lili/modules/member/service/ClerkService.java b/framework/src/main/java/cn/lili/modules/member/service/ClerkService.java
index 17bf036..8b43997 100644
--- a/framework/src/main/java/cn/lili/modules/member/service/ClerkService.java
+++ b/framework/src/main/java/cn/lili/modules/member/service/ClerkService.java
@@ -1,6 +1,8 @@
 package cn.lili.modules.member.service;
 
+import cn.lili.common.enums.ResultUtil;
 import cn.lili.common.vo.PageVO;
+import cn.lili.common.vo.ResultMessage;
 import cn.lili.modules.member.entity.dos.Clerk;
 import cn.lili.modules.member.entity.dos.Member;
 import cn.lili.modules.member.entity.dto.ClerkAddDTO;
@@ -23,6 +25,11 @@
  * @date 2021/12/28 7:42 涓嬪崍
  */
 public interface ClerkService extends IService<Clerk> {
+
+
+    ResultMessage<Object> addClerk(ClerkAddDTO clerkAddDTO);
+
+    Member addClerkReturnMember(ClerkAddDTO clerkAddDTO);
 
     /**
      * 搴楀憳鏌ヨ
@@ -88,6 +95,14 @@
     Member checkClerk(String mobile);
 
     /**
+     * 灏忕▼搴忕妫�娴嬬數璇濆彿鐮佹湁鏁堟��
+     * @param memberId
+     * @param mobile
+     * @return
+     */
+    Member checkClerk(String memberId, String mobile);
+
+    /**
      * 搴楀憳鐘舵�佹搷浣�
      *
      * @param id     搴楀憳id
diff --git a/framework/src/main/java/cn/lili/modules/member/service/StoreRoleService.java b/framework/src/main/java/cn/lili/modules/member/service/StoreRoleService.java
index 74c9804..4f5e027 100644
--- a/framework/src/main/java/cn/lili/modules/member/service/StoreRoleService.java
+++ b/framework/src/main/java/cn/lili/modules/member/service/StoreRoleService.java
@@ -14,6 +14,8 @@
  */
 public interface StoreRoleService extends IService<StoreRole> {
 
+    List<StoreRole> getSelectList();
+
     /**
      * 鑾峰彇榛樿瑙掕壊
      *
diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java
index 481b812..2d9ebf6 100644
--- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java
@@ -1,14 +1,16 @@
 package cn.lili.modules.member.serviceimpl;
-
+import lombok.extern.slf4j.Slf4j;
 import cn.hutool.core.text.CharSequenceUtil;
 import cn.lili.cache.Cache;
 import cn.lili.cache.CachePrefix;
 import cn.lili.common.enums.ResultCode;
+import cn.lili.common.enums.ResultUtil;
 import cn.lili.common.exception.ServiceException;
 import cn.lili.common.security.context.UserContext;
 import cn.lili.common.security.enums.UserEnums;
 import cn.lili.common.utils.StringUtils;
 import cn.lili.common.vo.PageVO;
+import cn.lili.common.vo.ResultMessage;
 import cn.lili.modules.member.entity.dos.Clerk;
 import cn.lili.modules.member.entity.dos.Member;
 import cn.lili.modules.member.entity.dos.StoreClerkRole;
@@ -16,6 +18,7 @@
 import cn.lili.modules.member.entity.dto.ClerkAddDTO;
 import cn.lili.modules.member.entity.dto.ClerkEditDTO;
 import cn.lili.modules.member.entity.dto.ClerkQueryDTO;
+import cn.lili.modules.member.entity.dto.MemberAddDTO;
 import cn.lili.modules.member.entity.vo.ClerkVO;
 import cn.lili.modules.member.mapper.ClerkMapper;
 import cn.lili.modules.member.service.*;
@@ -43,6 +46,7 @@
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
+@Slf4j
 public class ClerkServiceImpl extends ServiceImpl<ClerkMapper, Clerk> implements ClerkService {
 
     @Autowired
@@ -57,7 +61,100 @@
     private Cache cache;
 
     @Override
+    public ResultMessage<Object> addClerk(ClerkAddDTO clerkAddDTO) {
+        int rolesMaxSize = 10;
+        try {
+            //瑙掕壊蹇呴�夛紝骞朵笖鏈�鍚庤缃�10涓�
+            if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() >= rolesMaxSize) {
+                throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN);
+            }
+            //鏍¢獙鏄惁宸茬粡鏄細鍛�
+            Member member = memberService.findByMobile(clerkAddDTO.getMobile());
+            if (member == null) {
+                //娣诲姞浼氬憳
+                MemberAddDTO memberAddDTO = new MemberAddDTO();
+                memberAddDTO.setMobile(clerkAddDTO.getMobile());
+                memberAddDTO.setPassword(clerkAddDTO.getPassword());
+                memberAddDTO.setUsername(clerkAddDTO.getUsername());
+                member = memberService.addMember(memberAddDTO);
+            } else {
+                //鏍¢獙瑕佹坊鍔犵殑浼氬憳鏄惁宸茬粡鏄簵涓�
+                if (Boolean.TRUE.equals(member.getHaveStore())) {
+                    throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR);
+                }
+                //鏍¢獙浼氬憳鐨勬湁鏁堟��
+                if (Boolean.FALSE.equals(member.getDisabled())) {
+                    throw new ServiceException(ResultCode.USER_STATUS_ERROR);
+                }
+            }
+            //娣诲姞搴楀憳
+            clerkAddDTO.setMemberId(member.getId());
+            clerkAddDTO.setShopkeeper(false);
+            clerkAddDTO.setStoreId(UserContext.getCurrentUser().getStoreId());
+            this.saveClerk(clerkAddDTO);
+            //淇敼姝や細鍛樻嫢鏈夊簵閾�
+            List<String> ids = new ArrayList<>();
+            ids.add(member.getId());
+            memberService.updateHaveShop(true, UserContext.getCurrentUser().getStoreId(), ids);
+        } catch (ServiceException se) {
+            log.info(se.getMsg(), se);
+            throw se;
+        } catch (Exception e) {
+            log.error("娣诲姞搴楀憳鍑洪敊", e);
+        }
+        return ResultUtil.success();
+    }
+    @Override
+    public Member addClerkReturnMember(ClerkAddDTO clerkAddDTO) {
+        int rolesMaxSize = 10;
+        Member member = null;
+        try {
+            //瑙掕壊蹇呴�夛紝骞朵笖鏈�鍚庤缃�10涓�
+            if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() >= rolesMaxSize) {
+                throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN);
+            }
+            //鏍¢獙鏄惁宸茬粡鏄細鍛�
+            member = memberService.findByMobile(clerkAddDTO.getMobile());
+            if (member == null) {
+                //娣诲姞浼氬憳
+                MemberAddDTO memberAddDTO = new MemberAddDTO();
+                memberAddDTO.setMobile(clerkAddDTO.getMobile());
+                memberAddDTO.setPassword(clerkAddDTO.getPassword());
+                memberAddDTO.setUsername(clerkAddDTO.getUsername());
+                member = memberService.addMember(memberAddDTO);
+            } else {
+                //鏍¢獙瑕佹坊鍔犵殑浼氬憳鏄惁宸茬粡鏄簵涓�
+                if (Boolean.TRUE.equals(member.getHaveStore())) {
+                    throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR);
+                }
+                //鏍¢獙浼氬憳鐨勬湁鏁堟��
+                if (Boolean.FALSE.equals(member.getDisabled())) {
+                    throw new ServiceException(ResultCode.USER_STATUS_ERROR);
+                }
+            }
+            //娣诲姞搴楀憳
+            clerkAddDTO.setMemberId(member.getId());
+            clerkAddDTO.setShopkeeper(false);
+            String storeId = UserContext.getCurrentUser().getStoreId();
+//            storeId = "1376433565247471616"; //娴嬭瘯鐢�
+            clerkAddDTO.setStoreId(storeId);
+            this.saveClerk(clerkAddDTO);
+            //淇敼姝や細鍛樻嫢鏈夊簵閾�
+            List<String> ids = new ArrayList<>();
+            ids.add(member.getId());
+            memberService.updateHaveShop(true,storeId, ids);
+
+        } catch (ServiceException se) {
+            log.info(se.getMsg(), se);
+            throw se;
+        } catch (Exception e) {
+            log.error("娣诲姞搴楀憳鍑洪敊", e);
+        }
+        return member;
+    }
+    @Override
     public IPage<ClerkVO> clerkForPage(PageVO page, ClerkQueryDTO clerkQueryDTO) {
+
 
         QueryWrapper<ClerkVO> clerkVOQueryWrapper = new QueryWrapper<>();
         clerkVOQueryWrapper.eq("li_clerk.store_id", UserContext.getCurrentUser().getStoreId());
@@ -159,9 +256,10 @@
             if (Boolean.TRUE.equals(clerk.getShopkeeper())) {
                 throw new ServiceException(ResultCode.CANT_EDIT_CLERK_SHOPKEEPER);
             }
-
+            String storeId = UserContext.getCurrentUser().getStoreId();
+//            storeId = "1376433565247471616";
             //鏍¢獙褰撳墠搴楀憳鏄惁鏄綋鍓嶅簵閾虹殑
-            if (!clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) {
+            if (!clerk.getStoreId().equals(storeId)) {
                 throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
             }
             if (Boolean.TRUE.equals(clerkEditDTO.getIsSuper())) {
@@ -186,8 +284,11 @@
 
             //閮ㄩ棬鏍¢獙
             if (CharSequenceUtil.isNotEmpty(clerkEditDTO.getDepartmentId())) {
+                System.out.println(clerkEditDTO.getDepartmentId());
+                System.out.println(storeDepartmentService.getById(clerkEditDTO.getDepartmentId()));
                 if (storeDepartmentService.getById(clerkEditDTO.getDepartmentId()) != null) {
                     clerk.setDepartmentId(clerkEditDTO.getDepartmentId());
+                    System.out.println(clerk);
                 } else {
                     throw new ServiceException(ResultCode.PERMISSION_NOT_FOUND_ERROR);
                 }
@@ -226,6 +327,7 @@
         //瑙掕壊鏍¢獙
         if (clerkAddDTO.getRoles() != null && !clerkAddDTO.getRoles().isEmpty()) {
             List<StoreRole> storeRoles = storeRoleService.list(clerkAddDTO.getRoles());
+            System.out.println(storeRoles);
             if (storeRoles.size() != clerkAddDTO.getRoles().size()) {
                 throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
             }
@@ -277,7 +379,9 @@
     @Override
     public void deleteClerk(List<String> ids) {
         QueryWrapper<Clerk> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId());
+        ;
+//        String storeId = "1376433565247471616";
+        queryWrapper.eq("store_id", UserContext.getCurrentUser().getId());
         queryWrapper.in("id", ids);
         List<Clerk> clerks = this.baseMapper.selectList(queryWrapper);
         if (!clerks.isEmpty()) {
@@ -291,6 +395,7 @@
             List<String> memberIds = new ArrayList<>();
             clerks.forEach(clerk -> {
                 //鏃犳硶鍒犻櫎褰撳墠鐧诲綍鐨勫簵鍛�
+                System.out.println(UserContext.getCurrentUser());
                 if (UserContext.getCurrentUser().getClerkId().equals(clerk.getId())) {
                     throw new ServiceException(ResultCode.CLERK_CURRENT_SUPPER);
                 }
@@ -331,6 +436,38 @@
     }
 
     @Override
+    public Member checkClerk(String memberId, String mobile) {
+        //鏍¢獙鏄惁宸茬粡鏄細鍛�
+        Member member = memberService.findByMobile(mobile);
+        System.out.println(member);
+        if (member != null) {
+            // 鏄綋鍓嶈处鍙蜂慨鏀�
+            if (memberId !=null && memberId.equals(member.getId())) {
+                return member;
+            }
+
+            //鏍¢獙瑕佹坊鍔犵殑浼氬憳鏄惁宸茬粡鏄簵涓�
+            if (Boolean.TRUE.equals(member.getHaveStore())) {
+                throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR);
+            }
+            //鏍¢獙浼氬憳鐨勬湁鏁堟��
+            if (Boolean.FALSE.equals(member.getDisabled())) {
+                throw new ServiceException(ResultCode.USER_STATUS_ERROR);
+            }
+            //鏍¢獙姝や細鍛樻槸鍚﹀凡缁忔槸搴楀憳
+            Clerk clerk = this.getClerkByMemberId(member.getId());
+            if (clerk != null && !clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) {
+                throw new ServiceException(ResultCode.CLERK_USER_ERROR);
+            }
+            if (clerk != null && clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) {
+                throw new ServiceException(ResultCode.CLERK_ALREADY_EXIT_ERROR);
+            }
+            return member;
+        }
+        return new Member();
+    }
+
+    @Override
     public void disable(String id, Boolean status) {
         Clerk clerk = this.getById(id);
         if (clerk == null) {
diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java
index 0283f2b..6408262 100644
--- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreRoleServiceImpl.java
@@ -12,6 +12,7 @@
 import cn.lili.modules.member.service.StoreDepartmentRoleService;
 import cn.lili.modules.member.service.StoreMenuRoleService;
 import cn.lili.modules.member.service.StoreRoleService;
+import cn.lili.mybatis.util.PageUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,7 +30,21 @@
 @Service
 @Transactional(rollbackFor = Exception.class)
 public class StoreRoleServiceImpl extends ServiceImpl<StoreRoleMapper, StoreRole> implements StoreRoleService {
+    @Override
+    public List<StoreRole> getSelectList() {
 
+        String storeId = UserContext.getCurrentUser().getStoreId();
+//        System.out.println(UserContext.getCurrentUser().getId());
+//        System.out.println(storeId);
+//        String storeId = "1376433565247471616";
+        if ( storeId == null) {
+            return null;
+        }
+        StoreRole storeRole = new StoreRole();
+        storeRole.setStoreId(storeId);
+
+        return  this.list(PageUtil.initWrapper(storeRole));
+    }
     /**
      * 閮ㄩ棬瑙掕壊
      */
@@ -109,7 +124,8 @@
     @Override
     public List<StoreRole> list(List<String> ids) {
         QueryWrapper<StoreRole> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId());
+        String storeId = UserContext.getCurrentUser().getStoreId();
+        queryWrapper.eq("store_id", storeId);
         queryWrapper.in("id", ids);
         return this.baseMapper.selectList(queryWrapper);
     }
diff --git a/framework/src/main/resources/mapper/lmk/StoreMemberMapper.xml b/framework/src/main/resources/mapper/lmk/StoreMemberMapper.xml
index e40eeb7..ee9aed1 100644
--- a/framework/src/main/resources/mapper/lmk/StoreMemberMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/StoreMemberMapper.xml
@@ -24,8 +24,6 @@
         SELECT
             LSM.id,
             LSM.real_name,
-            LSM.role,
-            LSM.store_id,
             LSM.member_id,
             LM.mobile,
             LM.username
@@ -38,24 +36,49 @@
     </select>
 
 
+
+
     <select id="getPage" resultMap="BaseResultMap">
         SELECT
-            LSM.id,
-            LSM.real_name,
-            LSM.role,
-            LSM.store_id,
-            LSM.member_id,
-            LM.mobile,
-            LM.username
-        FROM lmk_store_member LSM
-        LEFT JOIN li_member LM
-        ON LM.id = LSM.member_id
+        LM.id,
+        LSM.real_name,
+        LM.store_id,
+        LM.mobile
+        FROM li_member LM
+        LEFT JOIN li_clerk LC
+        ON LC.member_id = LM.id
+        LEFT JOIN lmk_store_member LSM
+        ON LSM.member_id =  LM.id
         where LSM.delete_flag = 0
         AND LM.delete_flag = 0
+        AND LC.delete_flag = 0
         <if test="query.realName != null and query.realName != ''">
             AND LSM.real_name LIKE CONCAT('%', #{query.realName}, '%')
         </if>
-        AND LSM.store_id = #{query.storeId}
+        AND LM.store_id = #{query.storeId}
     </select>
 
+    <select id="getClerkPage" resultType="cn.lili.modules.member.entity.vo.ClerkVO">
+        SELECT
+        LC.*,
+        m.id,
+        m.mobile as mobile,
+        LSM.real_name as realName
+        FROM
+        li_clerk LC
+        Inner JOIN li_member m ON LC.member_id = m.id
+        LEFT JOIN lmk_store_member LSM ON LSM.member_id = m.id
+        <where>
+            LC.store_id = #{query.storeId}
+            <if test="query.departmentId != null and query.departmentId != ''">
+                AND LC.department_id = #{query.departmentId}
+            </if>
+            <if test="query.realName != null and query.realName != ''">
+                AND LSM.real_name LIKE CONCAT('%', #{query.realName}, '%')
+            </if>
+            <if test="query.mobile != null and query.mobile != ''">
+                AND m.mobile LIKE CONCAT('%', #{query.mobile}, '%')
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/seller-api/src/main/java/cn/lili/controller/permission/ClerkStoreController.java b/seller-api/src/main/java/cn/lili/controller/permission/ClerkStoreController.java
index c60c98a..a799996 100644
--- a/seller-api/src/main/java/cn/lili/controller/permission/ClerkStoreController.java
+++ b/seller-api/src/main/java/cn/lili/controller/permission/ClerkStoreController.java
@@ -80,46 +80,7 @@
     @PostMapping
     @ApiOperation(value = "娣诲姞搴楀憳")
     public ResultMessage<Object> add(@Valid ClerkAddDTO clerkAddDTO) {
-        int rolesMaxSize = 10;
-        try {
-            if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() >= rolesMaxSize) {
-                throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN);
-            }
-            //鏍¢獙鏄惁宸茬粡鏄細鍛�
-            Member member = memberService.findByMobile(clerkAddDTO.getMobile());
-            if (member == null) {
-                //娣诲姞浼氬憳
-                MemberAddDTO memberAddDTO = new MemberAddDTO();
-                memberAddDTO.setMobile(clerkAddDTO.getMobile());
-                memberAddDTO.setPassword(clerkAddDTO.getPassword());
-                memberAddDTO.setUsername(clerkAddDTO.getUsername());
-                member = memberService.addMember(memberAddDTO);
-            } else {
-                //鏍¢獙瑕佹坊鍔犵殑浼氬憳鏄惁宸茬粡鏄簵涓�
-                if (Boolean.TRUE.equals(member.getHaveStore())) {
-                    throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR);
-                }
-                //鏍¢獙浼氬憳鐨勬湁鏁堟��
-                if (Boolean.FALSE.equals(member.getDisabled())) {
-                    throw new ServiceException(ResultCode.USER_STATUS_ERROR);
-                }
-            }
-            //娣诲姞搴楀憳
-            clerkAddDTO.setMemberId(member.getId());
-            clerkAddDTO.setShopkeeper(false);
-            clerkAddDTO.setStoreId(UserContext.getCurrentUser().getStoreId());
-            clerkService.saveClerk(clerkAddDTO);
-            //淇敼姝や細鍛樻嫢鏈夊簵閾�
-            List<String> ids = new ArrayList<>();
-            ids.add(member.getId());
-            memberService.updateHaveShop(true, UserContext.getCurrentUser().getStoreId(), ids);
-        } catch (ServiceException se) {
-            log.info(se.getMsg(), se);
-            throw se;
-        } catch (Exception e) {
-            log.error("娣诲姞搴楀憳鍑洪敊", e);
-        }
-        return ResultUtil.success();
+        return clerkService.addClerk(clerkAddDTO);
     }
 
 
diff --git a/seller-api/src/main/java/cn/lili/controller/permission/StoreRoleController.java b/seller-api/src/main/java/cn/lili/controller/permission/StoreRoleController.java
index 83e5761..62c7d0a 100644
--- a/seller-api/src/main/java/cn/lili/controller/permission/StoreRoleController.java
+++ b/seller-api/src/main/java/cn/lili/controller/permission/StoreRoleController.java
@@ -46,6 +46,8 @@
         return ResultUtil.data(page);
     }
 
+
+
     @PutMapping("/{roleId}")
     @ApiOperation(value = "缂栬緫搴楅摵瑙掕壊")
     public ResultMessage<StoreRole> edit(@PathVariable String roleId, StoreRole storeRole) {

--
Gitblit v1.8.0