xda 3 vuotta sitten
vanhempi
commit
4ad94e5621

+ 91 - 2
src/main/java/com/winhc/repal/constant/Constant.java

@@ -1,6 +1,10 @@
 package com.winhc.repal.constant;
 
+import com.winhc.repal.enums.PermissionEnum;
+
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -11,15 +15,100 @@ import java.util.Map;
 public class Constant {
 
     /**
-     *  用户权限code
+     * 用户权限code
      */
     public static final String USER_PERMISSION_KEY = "winhc:repal:userPermission:";
 
     /**
-     *  权限编码
+     * 权限编码
      */
     public static Map<String, String> PERMISSION_MAP = new HashMap<>();
 
+    /**
+     *  初始化角色name
+     */
+    public static final List<String> INIT_ROLE_NAME_LIST = new ArrayList<String>() {{
+        add("子管理员");
+        add("部门主管");
+        add("财务人员");
+        add("员工");
+    }};
+
+    /**
+     * 初始化角色子管理员权限
+     */
+    public static final List<String> ROLE_TWO = new ArrayList<String>() {{
+        add(PermissionEnum.MEMBER_MANAGER.getCode());
+        add(PermissionEnum.BOOK_MANAGER.getCode());
+        add(PermissionEnum.QUERY_ALL_RECEIVABLE.getCode());
+        add(PermissionEnum.ADD_RECEIVABLE.getCode());
+        add(PermissionEnum.UPDATE_RECEIVABLE.getCode());
+        add(PermissionEnum.QUERY_ALL_RECEIPT.getCode());
+        add(PermissionEnum.ADD_RECEIPT.getCode());
+        add(PermissionEnum.UPDATE_RECEIPT.getCode());
+        add(PermissionEnum.QUERY_ALL_CUST.getCode());
+        add(PermissionEnum.ADD_CUST.getCode());
+        add(PermissionEnum.UPDATE_CUST.getCode());
+        add(PermissionEnum.QUERY_ALL_SUPPLY.getCode());
+        add(PermissionEnum.ADD_SUPPLY.getCode());
+        add(PermissionEnum.UPDATE_SUPPLY.getCode());
+        add(PermissionEnum.QUERY_ALL_URGE.getCode());
+        add(PermissionEnum.URGE_BILL.getCode());
+    }};
+
+    /**
+     * 初始化角色部门主管权限
+     */
+    public static final List<String> ROLE_THREE = new ArrayList<String>() {{
+        add(PermissionEnum.QUERY_ALL_RECEIVABLE.getCode());
+        add(PermissionEnum.ADD_RECEIVABLE.getCode());
+        add(PermissionEnum.UPDATE_RECEIVABLE.getCode());
+        add(PermissionEnum.QUERY_ALL_RECEIPT.getCode());
+        add(PermissionEnum.ADD_RECEIPT.getCode());
+        add(PermissionEnum.UPDATE_RECEIPT.getCode());
+        add(PermissionEnum.QUERY_ALL_CUST.getCode());
+        add(PermissionEnum.ADD_CUST.getCode());
+        add(PermissionEnum.UPDATE_CUST.getCode());
+        add(PermissionEnum.QUERY_ALL_SUPPLY.getCode());
+        add(PermissionEnum.ADD_SUPPLY.getCode());
+        add(PermissionEnum.UPDATE_SUPPLY.getCode());
+        add(PermissionEnum.QUERY_ALL_URGE.getCode());
+        add(PermissionEnum.URGE_BILL.getCode());
+    }};
+
+    /**
+     * 初始化角色财务人员权限
+     */
+    public static final List<String> ROLE_FOUR = new ArrayList<String>() {{
+        add(PermissionEnum.QUERY_ALL_RECEIVABLE.getCode());
+        add(PermissionEnum.ADD_RECEIVABLE.getCode());
+        add(PermissionEnum.UPDATE_RECEIVABLE.getCode());
+        add(PermissionEnum.QUERY_ALL_RECEIPT.getCode());
+        add(PermissionEnum.ADD_RECEIPT.getCode());
+        add(PermissionEnum.UPDATE_RECEIPT.getCode());
+        add(PermissionEnum.QUERY_ALL_CUST.getCode());
+        add(PermissionEnum.QUERY_ALL_SUPPLY.getCode());
+        add(PermissionEnum.QUERY_ALL_URGE.getCode());
+        add(PermissionEnum.URGE_BILL.getCode());
+    }};
+
+    /**
+     * 初始化角色员工权限
+     */
+    public static final List<String> ROLE_FIVE = new ArrayList<String>() {{
+        add(PermissionEnum.QUERY_ALL_RECEIVABLE.getCode());
+        add(PermissionEnum.QUERY_ALL_RECEIPT.getCode());
+        add(PermissionEnum.QUERY_ALL_CUST.getCode());
+        add(PermissionEnum.QUERY_ALL_SUPPLY.getCode());
+        add(PermissionEnum.QUERY_ALL_URGE.getCode());
+    }};
+
+    public static List<List<String>> INIT_ROLE_LIST = new ArrayList<List<String>>() {{
+        add(ROLE_TWO);
+        add(ROLE_THREE);
+        add(ROLE_FOUR);
+        add(ROLE_FIVE);
+    }};
 
 
 }

+ 6 - 0
src/main/java/com/winhc/repal/controller/RepalBillController.java

@@ -76,4 +76,10 @@ public class RepalBillController {
     public BeanResponse<Boolean> updateRepalBill(@RequestBody UpdateRepalBillDTO dto) {
         return BeanResponse.success(CodeMsg.SUCCESS, repalBillService.updateRepalBill(dto));
     }
+
+    @ApiOperation("账款转移")
+    @RequestMapping(value = "/transfer", method = RequestMethod.POST)
+    public BeanResponse<Boolean> transferBill(@RequestBody TransferBillDTO dto) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalBillService.transferBill(dto));
+    }
 }

+ 7 - 4
src/main/java/com/winhc/repal/controller/RepalMemberController.java

@@ -9,10 +9,7 @@ import com.winhc.repal.service.RepalGroupMemberService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -47,4 +44,10 @@ public class RepalMemberController {
         return BeanResponse.success(CodeMsg.SUCCESS, repalGroupMemberService.addGroupMember(dto));
     }
 
+    @ApiOperation("删除成员")
+    @RequestMapping(value = "/del/{userId}", method = RequestMethod.GET)
+    public BeanResponse<Boolean> delGroupMember(@PathVariable("userId") Long userId) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalGroupMemberService.delGroupMember(userId));
+    }
+
 }

+ 1 - 1
src/main/java/com/winhc/repal/controller/RepalRoleController.java

@@ -36,7 +36,7 @@ public class RepalRoleController {
     @ApiOperation("新增角色")
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     @RolePermission(permission = PermissionEnum.ROLE_SETUP)
-    public BeanResponse<Boolean> addRole(@RequestBody MemberRoleDTO dto) {
+    public BeanResponse<Long> addRole(@RequestBody MemberRoleDTO dto) {
         return BeanResponse.success(CodeMsg.SUCCESS, repalGroupRoleService.addRole(dto));
     }
 

+ 3 - 0
src/main/java/com/winhc/repal/model/dto/SearchBillDTO.java

@@ -20,4 +20,7 @@ public class SearchBillDTO extends PageDTO {
 
     @ApiModelProperty("账本id")
     private Long repalBookId;
+
+    @ApiModelProperty("1应收2应付")
+    private Integer repalBillType;
 }

+ 21 - 0
src/main/java/com/winhc/repal/model/dto/TransferBillDTO.java

@@ -0,0 +1,21 @@
+package com.winhc.repal.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description: TransferBillDTO
+ * @Author: xda
+ * @Date: 2022/5/16 15:19
+ */
+@Data
+@ApiModel("转移账款")
+public class TransferBillDTO {
+
+    @ApiModelProperty("原始用户id")
+    private Long userId;
+
+    @ApiModelProperty("转移用户id")
+    private Long transferUserId;
+}

+ 10 - 0
src/main/java/com/winhc/repal/service/RepalBillService.java

@@ -172,4 +172,14 @@ public interface RepalBillService extends IService<RepalBill> {
     HomeReceivableBO getBillTotal(Integer repalBillStatus, Long userId, Long repalBookId, Integer repalBillType, LocalDateTime start, LocalDateTime end);
 
 
+
+    /**
+     * 转移账款
+     * @param dto dto 
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/5/16 15:26 
+     */
+    Boolean transferBill(TransferBillDTO dto);
+
 }

+ 10 - 0
src/main/java/com/winhc/repal/service/RepalCustChargeRelService.java

@@ -12,4 +12,14 @@ import com.winhc.repal.entity.RepalCustChargeRel;
 public interface RepalCustChargeRelService extends IService<RepalCustChargeRel> {
 
 
+
+    /**
+     * 获取用户负责的客户数量
+     * @param userId userId
+     * @return java.lang.Integer
+     * @author xda
+     * @date 2022/5/16 14:58
+     */
+    Integer getUserCustCount(Long userId);
+
 }

+ 10 - 0
src/main/java/com/winhc/repal/service/RepalGroupMemberService.java

@@ -86,4 +86,14 @@ public interface RepalGroupMemberService extends IService<RepalGroupMember> {
     Boolean addGroupMember(AddGroupMemberDTO dto);
 
 
+    /**
+     * 删除组织成员
+     * @param userId userId
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/5/16 14:48
+     */
+    Boolean delGroupMember(Long userId);
+
+
 }

+ 1 - 1
src/main/java/com/winhc/repal/service/RepalGroupRoleService.java

@@ -34,7 +34,7 @@ public interface RepalGroupRoleService extends IService<RepalGroupRole> {
      * @author xda
      * @date 2022/5/10 16:17
      */
-    Boolean addRole(MemberRoleDTO dto);
+    Long addRole(MemberRoleDTO dto);
 
     /**
      * 获取组织角色列表

+ 9 - 0
src/main/java/com/winhc/repal/service/RepalResponsiblePersonService.java

@@ -61,4 +61,13 @@ public interface RepalResponsiblePersonService extends IService<RepalResponsible
      */
     Boolean deletePersonByBillId(Long repalBillId);
 
+    /**
+     * 获取用户负责的账款数
+     * @param userId userId
+     * @return int
+     * @author xda
+     * @date 2022/5/16 14:54
+     */
+    Integer getUserResponsibleBillCount(Long userId);
+
 }

+ 33 - 2
src/main/java/com/winhc/repal/service/impl/RepalBillServiceImpl.java

@@ -112,6 +112,9 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
     @Autowired
     private RepalVipService repalVipService;
 
+    @Autowired
+    private RepalCustChargeRelService repalCustChargeRelService;
+
     @Override
     public RepalBillInfoVO getRepalBillPage(GetRepalBillPageDTO dto) {
         long userId = UserContextUtil.getUser().getUserId();
@@ -239,8 +242,18 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
         // 分页数据
         Page<RepalBill> repalBillPage = new Page<>(dto.getPageNum(),dto.getPageSize());
         SearchBillPageBO searchBillPageBO = new SearchBillPageBO();
-        searchBillPageBO.setReceivableFlag(repalRolePermissionService.checkUserPermission(userId, PermissionEnum.QUERY_ALL_RECEIVABLE.getCode()));
-        searchBillPageBO.setReceiptFlag(repalRolePermissionService.checkUserPermission(userId, PermissionEnum.QUERY_ALL_RECEIPT.getCode()));
+        if (Objects.isNull(dto.getRepalBillType())) {
+            searchBillPageBO.setReceivableFlag(repalRolePermissionService.checkUserPermission(userId, PermissionEnum.QUERY_ALL_RECEIVABLE.getCode()));
+            searchBillPageBO.setReceiptFlag(repalRolePermissionService.checkUserPermission(userId, PermissionEnum.QUERY_ALL_RECEIPT.getCode()));
+        } else {
+            if (RepalBillTypeEnum.RECEIVABLE.getCode().equals(dto.getRepalBillType())) {
+                searchBillPageBO.setReceivableFlag(repalRolePermissionService.checkUserPermission(userId, PermissionEnum.QUERY_ALL_RECEIVABLE.getCode()));
+                searchBillPageBO.setReceiptFlag(false);
+            } else {
+                searchBillPageBO.setReceivableFlag(false);
+                searchBillPageBO.setReceiptFlag(repalRolePermissionService.checkUserPermission(userId, PermissionEnum.QUERY_ALL_RECEIPT.getCode()));
+            }
+        }
         searchBillPageBO.setUserId(userId);
         searchBillPageBO.setRepalGroupId(groupId);
         searchBillPageBO.setRepalBookId(dto.getRepalBookId());
@@ -817,4 +830,22 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
     public HomeReceivableBO getBillTotal(Integer repalBillStatus, Long userId, Long repalBookId, Integer repalBillType, LocalDateTime start, LocalDateTime end) {
         return repalBillMapper.getBillTotal(repalBillStatus, userId, repalBookId, repalBillType, start, end);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean transferBill(TransferBillDTO dto) {
+        // 账款创建人
+        this.update(Wrappers.lambdaUpdate(RepalBill.class)
+                .eq(RepalBill::getUserId, dto.getUserId())
+                .set(RepalBill::getUserId, dto.getTransferUserId()));
+        // 账款负责人
+        repalResponsiblePersonService.update(Wrappers.lambdaUpdate(RepalResponsiblePerson.class)
+                .eq(RepalResponsiblePerson::getUserId, dto.getUserId())
+                .set(RepalResponsiblePerson::getUserId, dto.getTransferUserId()));
+        // 客户负责人
+        repalCustChargeRelService.update(Wrappers.lambdaUpdate(RepalCustChargeRel.class)
+                .eq(RepalCustChargeRel::getMemberUserId, dto.getUserId())
+                .set(RepalCustChargeRel::getMemberUserId, dto.getTransferUserId()));
+        return true;
+    }
 }

+ 5 - 0
src/main/java/com/winhc/repal/service/impl/RepalCustChargeRelServiceImpl.java

@@ -1,5 +1,6 @@
 package com.winhc.repal.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.winhc.repal.entity.RepalCustChargeRel;
 import com.winhc.repal.repository.RepalCustChargeRelMapper;
@@ -15,4 +16,8 @@ import org.springframework.stereotype.Service;
 public class RepalCustChargeRelServiceImpl extends ServiceImpl<RepalCustChargeRelMapper, RepalCustChargeRel> implements RepalCustChargeRelService {
 
 
+    @Override
+    public Integer getUserCustCount(Long userId) {
+        return this.count(Wrappers.lambdaQuery(RepalCustChargeRel.class).eq(RepalCustChargeRel::getMemberUserId, userId));
+    }
 }

+ 25 - 4
src/main/java/com/winhc/repal/service/impl/RepalGroupMemberServiceImpl.java

@@ -9,6 +9,7 @@ import com.winhc.common.exception.CommonException;
 import com.winhc.repal.cloud.LoginService;
 import com.winhc.repal.cloud.dto.RepalRegUserDTO;
 import com.winhc.repal.cloud.dto.RepalRegUserInfoDTO;
+import com.winhc.repal.entity.RepalBill;
 import com.winhc.repal.entity.RepalGroupMember;
 import com.winhc.repal.entity.RepalGroupRole;
 import com.winhc.repal.entity.UserInfo;
@@ -19,10 +20,7 @@ import com.winhc.repal.model.dto.AddGroupMemberDTO;
 import com.winhc.repal.model.dto.UpdateMemberRoleDTO;
 import com.winhc.repal.model.vo.GroupRoleMemberVO;
 import com.winhc.repal.repository.RepalGroupMemberMapper;
-import com.winhc.repal.service.RepalGroupMemberService;
-import com.winhc.repal.service.RepalGroupRoleService;
-import com.winhc.repal.service.UserExtService;
-import com.winhc.repal.service.UserInfoService;
+import com.winhc.repal.service.*;
 import com.winhc.repal.util.UserContextUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -57,6 +55,12 @@ public class RepalGroupMemberServiceImpl extends ServiceImpl<RepalGroupMemberMap
     @Autowired
     private UserInfoService userInfoService;
 
+    @Autowired
+    private RepalResponsiblePersonService repalResponsiblePersonService;
+
+    @Autowired
+    private RepalCustChargeRelService repalCustChargeRelService;
+
     @Override
     public Long getUserGroupId(Long userId) {
         RepalGroupMember repalGroupMember = this.getOne(Wrappers.lambdaQuery(RepalGroupMember.class)
@@ -184,4 +188,21 @@ public class RepalGroupMemberServiceImpl extends ServiceImpl<RepalGroupMemberMap
         }
         return true;
     }
+
+    @Override
+    public Boolean delGroupMember(Long userId) {
+        if (repalResponsiblePersonService.getUserResponsibleBillCount(userId) > 1) {
+            throw new CommonException(CodeMsg.FAILED, "当前成员有负责的账款未转移,无法删除");
+        }
+        if (repalCustChargeRelService.getUserCustCount(userId) > 1) {
+            throw new CommonException(CodeMsg.FAILED, "当前成员有负责的客户未转移,无法删除");
+        }
+        if (UserContextUtil.getUser().getUserId().equals(userId)) {
+            throw new CommonException(CodeMsg.FAILED, "无法删除自己");
+        }
+        this.update(Wrappers.lambdaUpdate(RepalGroupMember.class)
+                .eq(RepalGroupMember::getUserId, userId)
+                .eq(RepalGroupMember::getDeleted, DeletedStatusEnum.DELETE.getCode()));
+        return true;
+    }
 }

+ 2 - 2
src/main/java/com/winhc/repal/service/impl/RepalGroupRoleServiceImpl.java

@@ -50,7 +50,7 @@ public class RepalGroupRoleServiceImpl extends ServiceImpl<RepalGroupRoleMapper,
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean addRole(MemberRoleDTO dto) {
+    public Long addRole(MemberRoleDTO dto) {
         long groupId = repalGroupMemberService.getUserGroupId(UserContextUtil.getUser().getUserId());
         // 添加角色
         RepalGroupRole repalGroupRole = new RepalGroupRole();
@@ -61,7 +61,7 @@ public class RepalGroupRoleServiceImpl extends ServiceImpl<RepalGroupRoleMapper,
         this.save(repalGroupRole);
         // 为角色添加权限
         repalRolePermissionService.addRolePermission(repalGroupRole.getId(), dto.getPermissionCodeList());
-        return true;
+        return repalGroupRole.getId();
     }
 
     @Override

+ 16 - 3
src/main/java/com/winhc/repal/service/impl/RepalGroupServiceImpl.java

@@ -5,18 +5,18 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.winhc.common.model.base.VOPage;
+import com.winhc.repal.constant.Constant;
 import com.winhc.repal.entity.RepalBook;
 import com.winhc.repal.entity.RepalGroup;
 import com.winhc.repal.entity.RepalGroupMember;
 import com.winhc.repal.enums.DeletedStatusEnum;
 import com.winhc.repal.enums.RoleTypeEnum;
 import com.winhc.repal.model.dto.InitGroupDTO;
+import com.winhc.repal.model.dto.MemberRoleDTO;
 import com.winhc.repal.model.dto.PageDTO;
 import com.winhc.repal.model.vo.GroupMemberVo;
 import com.winhc.repal.repository.RepalGroupMapper;
-import com.winhc.repal.service.RepalBookService;
-import com.winhc.repal.service.RepalGroupMemberService;
-import com.winhc.repal.service.RepalGroupService;
+import com.winhc.repal.service.*;
 import com.winhc.repal.util.UserContextUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,6 +44,12 @@ public class RepalGroupServiceImpl extends ServiceImpl<RepalGroupMapper, RepalGr
     @Autowired
     private RepalBookService repalBookService;
 
+    @Autowired
+    private RepalRolePermissionService repalRolePermissionService;
+
+    @Autowired
+    private RepalGroupRoleService repalGroupRoleService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean initGroup(InitGroupDTO dto) {
@@ -65,6 +71,13 @@ public class RepalGroupServiceImpl extends ServiceImpl<RepalGroupMapper, RepalGr
             repalGroup.setGroupExt(dto.getGroupExt());
             this.save(repalGroup);
             repalGroupMemberService.addGroupMember(dto.getUserId(), dto.getUserName(), repalGroup.getId(), 1L, RoleTypeEnum.SYSTEM.getCode());
+            // 初始化4个角色
+            for (int i = 0; i < Constant.INIT_ROLE_NAME_LIST.size(); i++) {
+                MemberRoleDTO memberRoleDTO = new MemberRoleDTO();
+                memberRoleDTO.setRoleName(Constant.INIT_ROLE_NAME_LIST.get(i));
+                memberRoleDTO.setPermissionCodeList(Constant.INIT_ROLE_LIST.get(i + 1));
+                repalGroupRoleService.addRole(memberRoleDTO);
+            }
         }
         // 初始化一个账本
         RepalBook repalBook = new RepalBook();

+ 7 - 0
src/main/java/com/winhc/repal/service/impl/RepalResponsiblePersonServiceImpl.java

@@ -74,4 +74,11 @@ public class RepalResponsiblePersonServiceImpl extends ServiceImpl<RepalResponsi
                 .set(RepalResponsiblePerson::getDeleted, DeletedStatusEnum.DELETE.getCode()));
         return true;
     }
+
+    @Override
+    public Integer getUserResponsibleBillCount(Long userId) {
+        return this.count(Wrappers.lambdaQuery(RepalResponsiblePerson.class)
+                .eq(RepalResponsiblePerson::getUserId, userId)
+                .eq(RepalResponsiblePerson::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
+    }
 }