FengChaoYu 6 ماه پیش
والد
کامیت
5156ddf1e7

+ 10 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/contract/ContractTemplateController.java

@@ -6,6 +6,7 @@ import com.gree.mall.manager.annotation.ZfireList;
 import com.gree.mall.manager.bean.contract.ContractTemplateBean;
 import com.gree.mall.manager.bean.contract.ContractTemplateVO;
 import com.gree.mall.manager.bean.contract.ContractWebsitBean;
+import com.gree.mall.manager.enums.material.StateEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
 import com.gree.mall.manager.logic.contract.ContractTemplateLogic;
@@ -85,6 +86,15 @@ public class ContractTemplateController {
         return ResponseHelper.success();
     }
 
+    @PostMapping("status")
+    @ApiOperation(value = "合同模板-有效/无效")
+    public ResponseHelper status(
+            @ApiParam(value = "合同模板id", required = true) @RequestParam String contractTemplateId,
+            @ApiParam(value = "ON=有效 OFF=无效", required = true) @RequestParam StateEnum status) {
+        contractTemplateLogic.updateStatus(contractTemplateId, status);
+        return ResponseHelper.success();
+    }
+
     @PostMapping("del")
     @ApiOperation(value = "合同模板-删除")
     public ResponseHelper delete(@RequestParam String contractTemplateId) {

+ 101 - 8
mall-server-api/src/main/java/com/gree/mall/manager/logic/contract/ContractTemplateLogic.java

@@ -1,6 +1,8 @@
 package com.gree.mall.manager.logic.contract;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.contract.ContractTemplateBean;
@@ -8,12 +10,17 @@ import com.gree.mall.manager.bean.contract.ContractTemplateVO;
 import com.gree.mall.manager.bean.contract.ContractWebsitBean;
 import com.gree.mall.manager.commonmapper.CommonMapper;
 import com.gree.mall.manager.enums.ContractTypeEnum;
+import com.gree.mall.manager.enums.material.StateEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.plus.entity.ContractTemplate;
+import com.gree.mall.manager.plus.entity.ContractTemplateBak;
+import com.gree.mall.manager.plus.entity.ContractWebsit;
 import com.gree.mall.manager.plus.service.AdminWebsitService;
 import com.gree.mall.manager.plus.service.ContractTemplateService;
 import com.gree.mall.manager.plus.service.ContractWebsitService;
+import com.gree.mall.manager.utils.fadada.Auth4FDDUtil;
+import com.gree.mall.manager.utils.oss.OSSUtil;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import lombok.RequiredArgsConstructor;
@@ -24,6 +31,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -34,6 +43,7 @@ public class ContractTemplateLogic {
     private final ContractTemplateService contractTemplateService;
     private final ContractWebsitService contractWebsitService;
     private final AdminWebsitService adminWebsitService;
+    private final OSSUtil ossUtil;
 
     public IPage<ContractTemplateVO> list(ZfireParamBean zfireParamBean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -62,9 +72,80 @@ public class ContractTemplateLogic {
 
     @Transactional
     public void add(ContractTemplateBean contractTemplate) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        if (adminUser.getType().equals(2)) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
         this.validRequireParams(contractTemplate);
+        String urlWw = ossUtil.getUrlWw(contractTemplate.getContractTemplatePdf());
+        String templateId = IdWorker.getIdStr();
+
+        Auth4FDDUtil.uploadTemplate(templateId, null, urlWw);
+
+        contractTemplate.setCompanyWechatId(adminUser.getCompanyWechatId())
+                .setCompanyWechatName(adminUser.getCompanyName())
+                .setFadadaTemplateId(templateId)
+                .setContractTemplateName(contractTemplate.getContractTemplateName().trim())
+                .insert();
+
+        if (CollectionUtil.isNotEmpty(contractTemplate.getItems())) {
+            contractWebsitService.saveBatch(contractTemplate.getItems().stream()
+                    .peek(v -> v.setContractTemplateId(contractTemplate.getContractTemplateId())
+                            .setCompanyWechatId(contractTemplate.getCompanyWechatId())
+                            .setCompanyWechatName(contractTemplate.getCompanyWechatName())
+                            .setId(IdWorker.getIdStr()))
+                    .collect(Collectors.toList()));
+        }
+    }
+
+    public void update(ContractTemplateBean contractTemplate) {
+        this.validRequireParams(contractTemplate);
+        ContractTemplate byId = contractTemplateService.getById(contractTemplate.getContractTemplateId());
+        if (!byId.getContractTemplatePdf().equals(contractTemplate.getContractTemplatePdf())) {
+            String urlWw = ossUtil.getUrlWw(contractTemplate.getContractTemplatePdf());
+            String templateId = IdWorker.getIdStr();
+            Auth4FDDUtil.uploadTemplate(templateId, null, urlWw);
+            byId.setFadadaTemplateId(templateId);
+        }
+
+        byId.setContractTemplateName(contractTemplate.getContractTemplateName().trim())
+                .setValidDate(contractTemplate.getValidDate())
+                .setExpireDate(contractTemplate.getExpireDate())
+                .setContractTemplatePdf(contractTemplate.getContractTemplatePdf())
+                .setFollowContractTemplateId(contractTemplate.getFollowContractTemplateId())
+                .updateById();
+
+        contractWebsitService.lambdaUpdate()
+                .eq(ContractWebsit::getContractTemplateId, contractTemplate.getContractTemplateId())
+                .remove();
+        if (CollectionUtil.isNotEmpty(contractTemplate.getItems())) {
+            contractWebsitService.saveBatch(contractTemplate.getItems().stream()
+                    .peek(v -> v.setContractTemplateId(byId.getContractTemplateId())
+                            .setCompanyWechatId(byId.getCompanyWechatId())
+                            .setCompanyWechatName(byId.getCompanyWechatName())
+                            .setId(IdWorker.getIdStr()))
+                    .collect(Collectors.toList()));
+        }
+    }
+
+    public void delete(String contractTemplateId) {
+        ContractTemplate template = contractTemplateService.lambdaQuery()
+                .eq(ContractTemplate::getContractTemplateId, contractTemplateId)
+                .one();
+        ContractTemplateBak contractTemplateBak = new ContractTemplateBak();
+        BeanUtils.copyProperties(template, contractTemplateBak);
+        template.deleteById();
+        contractTemplateBak.insert();
+    }
+
+    public void updateStatus(String contractTemplateId, StateEnum status) {
+        ContractTemplate contractTemplate = new ContractTemplate();
+        contractTemplate.setStatus(status.getKey())
+                .setContractTemplateId(contractTemplateId)
+                .updateById();
     }
 
+
     private void validRequireParams(ContractTemplateBean contractTemplate) {
         if (StringUtils.isBlank(contractTemplate.getContractTemplateName())) {
             throw new RemoteServiceException("合同名称不能为空");
@@ -75,14 +156,26 @@ public class ContractTemplateLogic {
         if (contractTemplate.getContractType().equals(ContractTypeEnum.FOLLOW.getKey())) {
             contractTemplate.setFollowContractTemplateId("");
         }
-        if (contractTemplate.getContractType().equals(ContractTypeEnum.MAIN.getKey())) {
-
+        if (StringUtils.isBlank(contractTemplate.getContractTemplateId())
+                && ContractTypeEnum.MAIN.getKey().equals(contractTemplate.getContractType())
+                && Objects.isNull(contractTemplate.getValidDate())) {
+            throw new RemoteServiceException("主合同类型生效日期不能为空");
+        }
+        if (StringUtils.isBlank(contractTemplate.getContractTemplateId())
+                && ContractTypeEnum.MAIN.getKey().equals(contractTemplate.getContractType())
+                && Objects.isNull(contractTemplate.getExpireDate())) {
+            throw new RemoteServiceException("主合同类型失效日期不能为空");
+        }
+        if (StringUtils.isBlank(contractTemplate.getContractTemplateId())) {
+            Integer count = contractTemplateService.lambdaQuery()
+                    .eq(ContractTemplate::getContractTemplateName, contractTemplate.getContractTemplateName().trim())
+                    .count();
+            if (count > 0) {
+                throw new RemoteServiceException("合同名称已存在,不能重复");
+            }
+        }
+        if (StringUtils.isBlank(contractTemplate.getContractTemplatePdf())) {
+            throw new RemoteServiceException("合同模板不能为空");
         }
-    }
-
-    public void update(ContractTemplateBean contractTemplate) {
-    }
-
-    public void delete(String contractTemplateId) {
     }
 }