lwhhszx 2 年 前
コミット
f22002aa0d

+ 10 - 0
PCS/src/main/java/cn/cslg/permission/common/model/dto/ClientDTO.java

@@ -0,0 +1,10 @@
+package cn.cslg.permission.common.model.dto;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+
+@Data
+public class ClientDTO extends BaseVO {
+    private String name;
+    private Integer tenantId;
+}

+ 38 - 0
PCS/src/main/java/cn/cslg/permission/common/utils/LoginUtils.java

@@ -0,0 +1,38 @@
+package cn.cslg.permission.common.utils;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+@Component
+public class LoginUtils {
+    @Resource
+    private RedisUtil redisUtil;
+
+    public static String getToken() {
+        RequestAttributes ra = RequestContextHolder.getRequestAttributes();
+        ServletRequestAttributes sra = (ServletRequestAttributes) ra;
+        HttpServletRequest httpRequest = sra.getRequest();
+        String tem = httpRequest.getHeader("Cookie");
+        List<String> lst = StringUtils.changeStringToString(tem, ";");
+        final String[] token = {null};
+        lst.forEach(item -> {
+            if (item.contains("token")) {
+                token[0] = item;
+            }
+        });
+        return token[0].replaceAll(" ", "");
+    }
+
+    public Integer getId() {
+        String oriToken = LoginUtils.getToken();
+        String q = "token:login:" + oriToken.replace("=", ":");
+        String IdS = redisUtil.get(q);
+        return Integer.parseInt(IdS);
+    }
+}

+ 36 - 0
PCS/src/main/java/cn/cslg/permission/controller/ClientController.java

@@ -0,0 +1,36 @@
+package cn.cslg.permission.controller;
+
+import cn.cslg.permission.common.core.base.Constants;
+import cn.cslg.permission.common.model.vo.ApplicationVO;
+import cn.cslg.permission.common.utils.Response;
+import cn.cslg.permission.common.utils.auth.checkAuth;
+import cn.cslg.permission.domain.Client;
+import cn.cslg.permission.service.ClientService;
+import cn.cslg.permission.service.TenantService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 李仁杰
+ * @date 2023-2-24
+ * @description 客户 Controller 层
+ */
+
+@Tag(name = "客户管理")
+@RestController
+@RequestMapping(Constants.PERMISSION_API + "/client")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ClientController {
+   public final ClientService clientService;
+    @PostMapping("/add")
+    @Operation(summary = "添加客户")
+    public String addApplication(@RequestBody Client client) {
+        return Response.success(  clientService.add(client));
+    }
+}

+ 64 - 0
PCS/src/main/java/cn/cslg/permission/domain/Client.java

@@ -0,0 +1,64 @@
+package cn.cslg.permission.domain;
+
+
+
+
+import cn.cslg.permission.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * <p>
+ * 委托方表
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-02-17
+ */
+@Data
+@TableName("CLIENT")
+public class Client extends BaseEntity<Client> {
+
+    /**
+     * 委托方名称
+     */
+    private String name;
+
+    /**
+     * 创建者id
+     */
+    @TableField("create_id")
+    private Integer createBy;
+
+    /**
+     * 客户负责人
+     */
+    @TableField("personnel_id")
+    private Integer personnelId;
+
+    /**
+     * 1是开启,0是关闭
+     */
+    private Integer status;
+
+    /**
+     * 租户Id
+     */
+    @TableField("tenantId")
+    private Integer tenantId;
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    @TableField("ctime")
+    private Integer createTime;
+
+    @TableField(exist = false)
+    private String personnelName;
+
+}

+ 28 - 0
PCS/src/main/java/cn/cslg/permission/domain/associate/AssoTenantClient.java

@@ -0,0 +1,28 @@
+package cn.cslg.permission.domain.associate;
+
+import cn.cslg.permission.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author liRJ
+ * @date 2022-8-2
+ * @description 关联类 部门和职位关联人员
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "ASSOCIATE_TENANT_CLIENT")
+public class AssoTenantClient extends BaseEntity<AssoTenantClient> {
+
+    @TableField(value = "TENANT_ID")
+    private Integer tenantId;
+
+    @TableField(value = "CLIENT_ID")
+    private Integer clientId;
+
+}

+ 21 - 0
PCS/src/main/java/cn/cslg/permission/mapper/ClientMapper.java

@@ -0,0 +1,21 @@
+package cn.cslg.permission.mapper;
+
+
+import cn.cslg.permission.common.model.dto.ClientDTO;
+import cn.cslg.permission.domain.Client;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 委托方表 Mapper 接口
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-02-17
+ */
+public interface ClientMapper extends BaseMapper<Client> {
+    IPage<Client> getClientPageList(Page<Client> page, @Param("params") ClientDTO params);
+}

+ 16 - 0
PCS/src/main/java/cn/cslg/permission/mapper/associate/AssoTenantClientMapper.java

@@ -0,0 +1,16 @@
+package cn.cslg.permission.mapper.associate;
+
+import cn.cslg.permission.domain.associate.AssoPerDp;
+import cn.cslg.permission.domain.associate.AssoTenantClient;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-2
+ * @description 关联类 部门和职位关联人员 Mapper 层
+ */
+
+@Mapper
+public interface AssoTenantClientMapper extends BaseMapper<AssoTenantClient> {
+}

+ 140 - 0
PCS/src/main/java/cn/cslg/permission/service/ClientService.java

@@ -0,0 +1,140 @@
+package cn.cslg.permission.service;
+
+import cn.cslg.permission.common.model.dto.ClientDTO;
+import cn.cslg.permission.common.utils.*;
+import cn.cslg.permission.domain.Client;
+import cn.cslg.permission.domain.Personnel;
+import cn.cslg.permission.mapper.ClientMapper;
+import cn.cslg.permission.service.associate.AssoTenantClientService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 委托方表 服务类
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-02-17
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ClientService extends ServiceImpl<ClientMapper, Client> {
+    private final LoginUtils loginUtils;
+    private final CacheUtils cacheUtils;
+    private final PersonnelService personnelService;
+    private final AssoTenantClientService assoTenantClientService;
+
+    /**
+     * @author lrj
+     * @param params
+     * @description 分页获得客户列表
+     * @return
+     */
+    public IPage<Client> getPageList(ClientDTO params) {
+        LambdaQueryWrapper<Client> queryWrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotEmpty(params.getName())) {
+            queryWrapper.like(Client::getName, params.getName());
+        }
+        if(params.getTenantId()!=null){
+
+        }
+        else{
+            queryWrapper.isNotNull(Client::getTenantId);
+        }
+        queryWrapper.orderByDesc(Client::getCreateTime);
+        IPage<Client> lst = this.page(new Page<>(params.getCurrent(), params.getSize()), queryWrapper);
+        List<Client> list = this.page(new Page<>(params.getCurrent(), params.getSize()), queryWrapper).getRecords();
+        this.loadClient(list);
+        lst.setRecords(list);
+        return lst;
+    }
+
+    public Client getClientByName(String name) {
+        LambdaQueryWrapper<Client> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Client::getName, name);
+        return this.getOne(queryWrapper);
+    }
+
+    public List<Client> getClientByTenant(Integer tenantId) {
+        LambdaQueryWrapper<Client> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Client::getTenantId, tenantId);
+        return this.list(queryWrapper);
+    }
+
+    /**
+     * @autor lrj
+     * @param client
+     * @return
+     * @descrption 添加客户
+     */
+    public String add(Client client) {
+        client.setCreateBy(loginUtils.getId());
+        client.setStatus(1);
+        client.insert();
+        return Response.success(client.getId());
+    }
+
+    /**
+     * @autor lrj
+     * @param id
+     * @return
+     * @description 删除客户
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public String delete(Integer id) {
+        //删除客户的关联信息
+        assoTenantClientService.deleteApplicationTenant(id,null);
+        this.removeById(id);
+        return Response.success(true);
+    }
+    /**
+     * @autor lrj
+     * @param client
+     * @return
+     * @description 修改客户
+     */
+    public String edit(Client client) {
+        Client temp = this.getClientByName(client.getName());
+        if (temp != null && !temp.getId().equals(client.getId())) {
+            return Response.error("客户名称已存在");
+        }
+        client.updateById();
+        return Response.success();
+    }
+
+    /**
+     * @author 李仁杰
+     * @description 装载客户
+     */
+    public void loadClient(List<Client> clients){
+        List<Integer> personIds =clients.stream().map(Client::getPersonnelId).collect(Collectors.toList());
+        LambdaQueryWrapper<Personnel> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.select(Personnel::getPersonnelName)
+                    .select(Personnel::getId);
+        queryWrapper.in(Personnel::getId,personIds);
+        List<Personnel> personnels = personnelService.list(queryWrapper);
+        for (Client client : clients) {
+            for (Personnel personnel : personnels) {
+                if (client.getPersonnelId() != null) {
+                    if (client.getPersonnelId().equals(personnel.getId())) {
+                        client.setPersonnelName(personnel.getPersonnelName());
+                    }
+                }
+            }
+        }
+
+    }
+}

+ 70 - 0
PCS/src/main/java/cn/cslg/permission/service/associate/AssoTenantClientService.java

@@ -0,0 +1,70 @@
+package cn.cslg.permission.service.associate;
+
+import cn.cslg.permission.domain.associate.AssoApplicationTenant;
+import cn.cslg.permission.domain.associate.AssoTenantClient;
+import cn.cslg.permission.mapper.associate.AssoApplicationTenantMapper;
+import cn.cslg.permission.mapper.associate.AssoTenantClientMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+/**
+ * @author lrj
+ * @date 2023/2/24
+ * @description 关联类 租户和客户 Service 层
+ */
+
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class AssoTenantClientService extends ServiceImpl<AssoTenantClientMapper, AssoTenantClient> {
+    /**
+     * 添加客户 租户关联关系
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void addTenantClient(int clientId, int tenantId) {
+        try {
+            AssoTenantClient tenantClient = new AssoTenantClient();
+            tenantClient
+                    .setTenantId(tenantId)
+                    .setClientId(clientId);
+
+            this.save(tenantClient);
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 删除客户 租户关联关系
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteApplicationTenant(Integer clientId, Integer tenantId) {
+        try {
+            LambdaQueryWrapper<AssoTenantClient> queryWrapper = new LambdaQueryWrapper<>();
+            if (tenantId != null) {
+                queryWrapper.eq(AssoTenantClient::getTenantId, tenantId);
+            } else if (clientId != null) {
+                queryWrapper
+                        .eq(AssoTenantClient::getClientId, clientId);
+            }
+
+            this.remove(queryWrapper);
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 修改应用 租户关联关系
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateApplicationTenant(int applicationId, int tenantId) {
+
+    }
+}