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) { 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; } 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) { framework/src/main/java/cn/lili/modules/lmk/domain/query/CheckClerkMobileQuery.java
New file @@ -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; } 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; } framework/src/main/java/cn/lili/modules/lmk/domain/vo/CheckClerkPermissionVO.java
New file @@ -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; } 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); } 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(); } 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查询数据库里的商店id // 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); } } 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); 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 framework/src/main/java/cn/lili/modules/member/service/StoreRoleService.java
@@ -14,6 +14,8 @@ */ public interface StoreRoleService extends IService<StoreRole> { List<StoreRole> getSelectList(); /** * 获取默认角色 * 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) { 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); } 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> 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); } 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) {