From f6a1bf1d9b19dd8b3750034048f3876d086db1f1 Mon Sep 17 00:00:00 2001
From: ZQN <364596817@qq.com>
Date: 星期三, 14 八月 2024 17:11:49 +0800
Subject: [PATCH] 企业二维码添加

---
 project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java |  126 +++++++++++++++++++++++++++++------------
 1 files changed, 88 insertions(+), 38 deletions(-)

diff --git a/project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java b/project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java
index e43b05a..08f121d 100644
--- a/project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java
+++ b/project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java
@@ -1,28 +1,29 @@
 package com.project.system.service.impl;
 
+import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.project.common.constant.UserConstants;
 import com.project.common.core.domain.entity.SysUser;
 import com.project.common.core.domain.model.ImportError;
 import com.project.common.exception.base.BaseException;
 import com.project.common.utils.SecurityUtils;
+import com.project.common.utils.StringUtils;
+import com.project.common.utils.file.ImageUtils;
+import com.project.system.domain.SysCompany;
+import com.project.system.domain.bo.editBo.SysCompanyBo;
+import com.project.system.domain.bo.queryBo.SysCompanyQueryBo;
 import com.project.system.domain.vo.SysCompanyResultVo;
+import com.project.system.domain.vo.SysCompanyVo;
+import com.project.system.mapper.SysCompanyMapper;
+import com.project.system.service.ISysCompanyService;
 import com.project.system.service.ISysUserService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import cn.hutool.core.convert.Convert;
-import com.project.common.utils.StringUtils;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.springframework.transaction.annotation.Transactional;
-import com.project.system.domain.vo.SysCompanyVo;
-import com.project.system.domain.bo.editBo.SysCompanyBo;
-import com.project.system.domain.bo.queryBo.SysCompanyQueryBo;
-import com.project.system.domain.SysCompany;
-import com.project.system.mapper.SysCompanyMapper;
-import com.project.system.service.ISysCompanyService;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -51,6 +52,11 @@
     public SysCompanyVo queryById(Long companyId)
     {
         SysCompany db = this.baseMapper.selectById(companyId);
+        if (StringUtils.isEmpty(db.getQrcodeImg())){
+            String qrcode = ImageUtils.createQrcode(db.getCompanyCode(), db.getCompanyName(), "2");
+            db.setQrcodeImg(qrcode);
+            this.updateById(db);
+        }
         return Convert.convert(SysCompanyVo.class , db);
     }
 
@@ -60,9 +66,15 @@
     public Boolean insertByBo(SysCompanyBo bo)
     {
         SysCompany add = Convert.convert(SysCompany.class, bo);
+        add.setCompanyStatus(1);
         validEntityBeforeSave(add);
+        String qrcode = ImageUtils.createQrcode(add.getCompanyCode(), add.getCompanyName(), "2");
+        add.setQrcodeImg(qrcode);
+
         boolean save = this.save(add);
-        addCompanyUser(add);
+        if (isAddUser(bo.getCompanyPhone())){
+            addCompanyUser(add, 0);
+        }
         return save;
     }
 
@@ -72,15 +84,32 @@
     {
         SysCompany old = this.getById(bo.getCompanyId());
         SysCompany update = Convert.convert(SysCompany.class, bo);
-        if (!old.getCompanyPhone().equals(update.getCompanyPhone())){
-            boolean delUser = delCompanyUser(old.getCompanyId());
-            if (!delUser) {
-                throw new BaseException("鍘熶紒涓氱敤鎴锋竻闄ゅけ璐ワ紝璇疯仈绯荤鐞嗗憳锛�");
-            }
-            this.addCompanyUser(update);
-        }
         validEntityBeforeSave(update);
+        if (!old.getCompanyPhone().equals(update.getCompanyPhone())){
+            if (this.count(SysCompany::getCompanyPhone, old.getCompanyPhone())==1){
+                boolean delUser = delCompanyUser(old.getCompanyPhone());
+                if (!delUser) {
+                    throw new BaseException("鍘熶紒涓氱敤鎴锋竻闄ゅけ璐ワ紝璇疯仈绯荤鐞嗗憳锛�");
+                }
+            }
+            if (isAddUser(update.getCompanyPhone())){
+                addCompanyUser(update, update.getCompanyStatus()==0 ? 1 : 0);
+            }
+        }
         return this.updateById(update);
+    }
+
+    @Override//鐘舵�佸紑鍏�
+    @Transactional
+    public Boolean updStatus(SysCompanyBo bo)
+    {
+        if (bo.getCompanyId()==null || bo.getCompanyStatus()==null) {
+            throw new BaseException("鍙傛暟鏈夎锛岀姸鎬佷慨鏀瑰け璐ワ紒");
+        }
+        SysCompany company = this.getById(bo.getCompanyId());
+        company.setCompanyStatus(bo.getCompanyStatus());
+        updCompanyUserStatus(company.getCompanyPhone(), bo.getCompanyStatus());
+        return this.updateById(company);
     }
 
     @Override//鍒犻櫎
@@ -88,7 +117,7 @@
     public Boolean deleteByIds(Collection<Long> ids)
     {
         for (Long id : ids) {
-            boolean b = delCompanyUser(id);
+            boolean b = delCompanyUser(this.getById(id).getCompanyPhone());
             if (!b) {
                 throw new BaseException(String.format("鍘熶紒涓� %1$s 鐢ㄦ埛娓呴櫎澶辫触锛岃鑱旂郴绠$悊鍛橈紒", id));
             }
@@ -136,13 +165,22 @@
             }
         });
         List<SysCompany> companies = Convert.toList(SysCompany.class, resultVo.getVoList());
+        companies.forEach(e->{
+            String qrcode = ImageUtils.createQrcode(e.getCompanyCode(), e.getCompanyName(), "2");
+            e.setQrcodeImg(qrcode);
+        });
         boolean b = this.saveOrUpdateBatch(companies);
-        companies.forEach(this::addCompanyUser);
+        for (SysCompany company : companies) {
+            if (isAddUser(company.getCompanyPhone())){
+                addCompanyUser(company,1);
+            }
+        }
         return b;
     }
 
 
 //-------------------------------------------------------------------------------------
+
 
     /**
      * 淇濆瓨鍓嶆牎楠�
@@ -151,6 +189,7 @@
     private void validEntityBeforeSave(SysCompany entity)
     {
         entity.setIsImport(0);
+
         if (StringUtils.isEmpty(entity.getCompanyImg())){
             throw new BaseException(String.format("%1$s锛岃涓婁紶钀ヤ笟鎵х収", entity.getCompanyName()));
         }
@@ -178,10 +217,8 @@
             if (nameCount>0){
                 throw new BaseException(String.format("%1$s锛屼紒涓氬悕宸插瓨鍦紒", entity.getCompanyName()));
             }
-            int phoneCount = this.count(lq().eq(SysCompany::getCompanyPhone, entity.getCompanyPhone()));
-            if (phoneCount>0){
-                throw new BaseException(String.format("%1$s锛屼紒涓氳仈绯荤數璇濆凡瀛樺湪锛�", entity.getCompanyName()));
-            }
+            SysUser user = new SysUser();
+            user.setPhonenumber(entity.getCompanyPhone());
         } else {
             int codeCount = this.count(lq().eq(SysCompany::getCompanyCode, entity.getCompanyCode()).ne(SysCompany::getCompanyId,entity.getCompanyId()));
             if (codeCount>0){
@@ -190,10 +227,6 @@
             int nameCount = this.count(lq().eq(SysCompany::getCompanyName, entity.getCompanyName()).ne(SysCompany::getCompanyId,entity.getCompanyId()));
             if (nameCount>0){
                 throw new BaseException(String.format("%1$s锛屼紒涓氬悕宸插瓨鍦紒", entity.getCompanyName()));
-            }
-            int phoneCount = this.count(lq().eq(SysCompany::getCompanyPhone, entity.getCompanyPhone()).ne(SysCompany::getCompanyId,entity.getCompanyId()));
-            if (phoneCount>0){
-                throw new BaseException(String.format("%1$s锛屼紒涓氳仈绯荤數璇濆凡瀛樺湪锛�", entity.getCompanyName()));
             }
         }
     }
@@ -213,6 +246,10 @@
         }
         if (StringUtils.isEmpty(entity.getCompanyPhone())){
             errorList.add(new ImportError(3, "璇峰~鍐欎紒涓氳仈绯讳汉鐢佃瘽锛�"));
+        } else {
+            if (entity.getCompanyPhone().length()!=11){
+                errorList.add(new ImportError(3, "璇峰~鍐欐纭墜鏈哄彿锛�"));
+            }
         }
         if (StringUtils.isEmpty(entity.getCompanyAddress())){
             errorList.add(new ImportError(4, "璇峰~鍐欎紒涓氬湴鍧�锛�"));
@@ -225,10 +262,6 @@
         if (nameCount>0){
             errorList.add(new ImportError(0, "浼佷笟鍚嶅凡瀛樺湪锛�"));
         }
-        int phoneCount = this.count(lq().eq(SysCompany::getCompanyPhone, entity.getCompanyPhone()));
-        if (phoneCount>0){
-            errorList.add(new ImportError(3, "浼佷笟鑱旂郴鐢佃瘽宸插瓨鍦紒"));
-        }
         entity.setCheckStatus(2);
     }
 
@@ -237,9 +270,16 @@
      * @param entity    浼佷笟淇℃伅
      */
     @Async
-    protected void addCompanyUser(SysCompany entity)
+    @Override
+    public void addCompanyUser(SysCompany entity, Integer isImport)
     {
+
         SysUser user = new SysUser();
+        if (isImport==1){
+            user.setStatus("0");
+        } else {
+            user.setStatus("1");
+        }
         SysCompany one = this.getOne(lq().eq(SysCompany::getCompanyCode, entity.getCompanyCode()));
         String phone = entity.getCompanyPhone();
         user.setPhonenumber(phone);
@@ -248,6 +288,7 @@
         user.setPassword(phone);
         user.setDeptId(one.getCompanyId());
         user.setUserType("02");
+        user.setRecommendUser(user.getPassword());
         if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
         {
             return;
@@ -262,19 +303,23 @@
         {
             return;
         }
-        user.setCreateBy(SecurityUtils.getUsername());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
-        user.setRecommendUser(user.getPassword());
         userService.insertUser(user);
+    }
+
+    @Async
+    protected void updCompanyUserStatus(String phone, Integer status)
+    {
+        userService.update(userService.lu().set(SysUser::getStatus,status).eq(SysUser::getPhonenumber, phone));
     }
 
     /**
      * 鍒犻櫎浼佷笟鐢ㄦ埛
-     * @param companyId    浼佷笟id
+     * @param companyPhone    浼佷笟id
      */
-    protected boolean delCompanyUser(Long companyId)
+    protected boolean delCompanyUser(String companyPhone)
     {
-        return userService.deleteUserByDeptId(companyId)>0;
+        return userService.deleteUserByCompanyPhone(companyPhone)>0;
     }
 
     /**
@@ -308,4 +353,9 @@
         }
         return qw;
     }
+
+    private Boolean isAddUser(String phone)
+    {
+       return userService.count(userService.lq().eq(SysUser::getUserName, phone).eq(SysUser::getDelFlag,0))==0;
+    }
 }

--
Gitblit v1.9.1