Browse Source

新增 CRM-数据权限 service

puhui999 1 year ago
parent
commit
19c9b6ae93

+ 3 - 0
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java

@@ -41,4 +41,7 @@ public interface ErrorCodeConstants {
     // ========== 客户管理 1_020_006_000 ==========
     ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1_020_006_000, "客户不存在");
 
+    // ========== 客户管理 1_020_007_000 ==========
+    ErrorCode CRM_PERMISSION_NOT_EXISTS = new ErrorCode(1_020_007_000, "数据权限不存在");
+
 }

+ 23 - 0
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java

@@ -0,0 +1,23 @@
+package cn.iocoder.yudao.module.crm.convert.permission;
+
+import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
+import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateBO;
+import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionUpdateBO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * Crm 数据权限 Convert
+ *
+ * @author Wanwan
+ */
+@Mapper
+public interface CrmPermissionConvert {
+
+    CrmPermissionConvert INSTANCE = Mappers.getMapper(CrmPermissionConvert.class);
+
+    CrmPermissionDO convert(CrmPermissionCreateBO createBO);
+
+    CrmPermissionDO convert(CrmPermissionUpdateBO updateBO);
+
+}

+ 57 - 0
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/permission/CrmPermissionDO.java

@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.crm.dal.dataobject.permission;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler;
+import cn.iocoder.yudao.module.crm.framework.enums.CrmEnum;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.util.Set;
+
+/**
+ * crm 数据权限 DO
+ *
+ * @author HUIHUI
+ */
+@TableName("crm_receivable")
+@KeySequence("crm_receivable_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CrmPermissionDO extends BaseDO {
+
+    /**
+     * ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 数据类型 关联 {@link CrmEnum}
+     */
+    private Integer crmType;
+    /**
+     * 数据编号 关联 {@link CrmEnum} 对应模块 DO#id
+     */
+    private Integer crmDataId;
+    /**
+     * 负责人的用户编号 关联 AdminUser#id
+     */
+    private Long ownerUserId;
+    /**
+     * 只读权限的用户编号数组
+     */
+    @TableField(typeHandler = JsonLongSetTypeHandler.class)
+    private Set<Long> roUserIds;
+    /**
+     * 读写权限的用户编号数组
+     */
+    @TableField(typeHandler = JsonLongSetTypeHandler.class)
+    private Set<Long> rwUserIds;
+
+}

+ 14 - 0
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/permission/CrmPermissionMapper.java

@@ -0,0 +1,14 @@
+package cn.iocoder.yudao.module.crm.dal.mysql.permission;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * crm 数据权限 mapper
+ *
+ * @author HUIHUI
+ */
+@Mapper
+public interface CrmPermissionMapper extends BaseMapperX<CrmPermissionDO> {
+}

+ 1 - 0
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/permission/package-info.java

@@ -0,0 +1 @@
+package cn.iocoder.yudao.module.crm.dal.mysql.permission;

+ 47 - 0
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionService.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.crm.service.permission;
+
+
+import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
+import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateBO;
+import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionUpdateBO;
+
+import javax.validation.Valid;
+
+/**
+ * crm 数据权限 Service 接口
+ *
+ * @author HUIHUI
+ */
+public interface CrmPermissionService {
+
+    /**
+     * 创建数据权限
+     *
+     * @param createBO 创建信息
+     * @return 编号
+     */
+    Long createCrmPermission(@Valid CrmPermissionCreateBO createBO);
+
+    /**
+     * 更新数据权限
+     *
+     * @param updateBO 更新信息
+     */
+    void updateCrmPermission(@Valid CrmPermissionUpdateBO updateBO);
+
+    /**
+     * 删除数据权限
+     *
+     * @param id 编号
+     */
+    void deleteCrmPermission(Long id);
+
+    /**
+     * 获得数据权限
+     *
+     * @param id 编号
+     * @return 数据权限
+     */
+    CrmPermissionDO getCrmPermission(Long id);
+
+}

+ 66 - 0
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java

@@ -0,0 +1,66 @@
+package cn.iocoder.yudao.module.crm.service.permission;
+
+import cn.iocoder.yudao.module.crm.convert.permission.CrmPermissionConvert;
+import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
+import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper;
+import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateBO;
+import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionUpdateBO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.CRM_PERMISSION_NOT_EXISTS;
+
+/**
+ * crm 数据权限 Service 接口实现类
+ *
+ * @author HUIHUI
+ */
+@Service
+@Validated
+public class CrmPermissionServiceImpl implements CrmPermissionService {
+
+    @Resource
+    private CrmPermissionMapper crmPermissionMapper;
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long createCrmPermission(CrmPermissionCreateBO createBO) {
+        CrmPermissionDO createDO = CrmPermissionConvert.INSTANCE.convert(createBO);
+        crmPermissionMapper.insert(createDO);
+        return createDO.getId();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCrmPermission(CrmPermissionUpdateBO updateBO) {
+        validateCrmPermissionExists(updateBO.getId());
+
+        CrmPermissionDO updateDO = CrmPermissionConvert.INSTANCE.convert(updateBO);
+        crmPermissionMapper.updateById(updateDO);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteCrmPermission(Long id) {
+        validateCrmPermissionExists(id);
+
+        crmPermissionMapper.deleteById(id);
+    }
+
+    private void validateCrmPermissionExists(Long id) {
+        if (crmPermissionMapper.selectById(id) == null) {
+            throw exception(CRM_PERMISSION_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public CrmPermissionDO getCrmPermission(Long id) {
+        return crmPermissionMapper.selectById(id);
+    }
+
+}

+ 40 - 0
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionCreateBO.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.crm.service.permission.bo;
+
+import cn.iocoder.yudao.module.crm.framework.enums.CrmEnum;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Set;
+
+/**
+ * crm 数据权限 Create BO
+ *
+ * @author HUIHUI
+ */
+@Data
+public class CrmPermissionCreateBO {
+
+    /**
+     * Crm 类型 关联 {@link CrmEnum}
+     */
+    @NotNull(message = "Crm 类型不能为空")
+    private Integer crmType;
+    /**
+     * 数据编号 关联 {@link CrmEnum} 对应模块 DO#getId()
+     */
+    @NotNull(message = "Crm 数据编号不能为空")
+    private Integer crmDataId;
+    /**
+     * 负责人的用户编号 关联 AdminUser#id, null 则为公海数据
+     */
+    private Long ownerUserId;
+    /**
+     * 只读权限的用户编号数组
+     */
+    private Set<Long> roUserIds;
+    /**
+     * 读写权限的用户编号数组
+     */
+    private Set<Long> rwUserIds;
+
+}

+ 47 - 0
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionUpdateBO.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.crm.service.permission.bo;
+
+import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
+import cn.iocoder.yudao.module.crm.framework.enums.CrmEnum;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Set;
+
+/**
+ * crm 数据权限 Update BO
+ *
+ * @author HUIHUI
+ */
+@Data
+public class CrmPermissionUpdateBO {
+
+    /**
+     * 数据权限编号 {@link CrmPermissionDO#getId()}
+     */
+    @NotNull(message = "Crm 数据权限编号不能为空")
+    private Long id;
+
+    /**
+     * Crm 类型 关联 {@link CrmEnum}
+     */
+    @NotNull(message = "Crm 类型不能为空")
+    private Integer crmType;
+    /**
+     * 数据编号 关联 {@link CrmEnum} 对应模块 DO#getId()
+     */
+    @NotNull(message = "Crm 数据编号不能为空")
+    private Integer crmDataId;
+    /**
+     * 负责人的用户编号 关联 AdminUser#id, null 则为公海数据
+     */
+    private Long ownerUserId;
+    /**
+     * 只读权限的用户编号数组
+     */
+    private Set<Long> roUserIds;
+    /**
+     * 读写权限的用户编号数组
+     */
+    private Set<Long> rwUserIds;
+
+}