Przeglądaj źródła

新建人员、新建公司、修改密码

Reiskuchen 5 lat temu
rodzic
commit
a7823bdf4c

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -62,7 +62,9 @@ public class UserController {
      */
     @RequestMapping("/deleteUser")
     public HttpRespMsg deleteUser(@RequestParam String userId) {
-        return userService.deleteUser(userId);
+        return userService.deleteUser(userId, request);
     }
+
+
 }
 

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -21,5 +21,11 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg getEmployeeList(HttpServletRequest request);
 
-    HttpRespMsg deleteUser(String userId);
+    HttpRespMsg deleteUser(String userId, HttpServletRequest request);
+
+    HttpRespMsg editPassword(String originPassword, String newPassword, HttpServletRequest request);
+
+    HttpRespMsg createCompany(String companyName, String name, String phone);
+
+    HttpRespMsg insertUser(String name, String phone, Integer role, HttpServletRequest request);
 }

+ 107 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -1,12 +1,15 @@
 package com.management.platform.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.Company;
 import com.management.platform.entity.User;
+import com.management.platform.mapper.CompanyMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.UserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MD5Util;
+import com.management.platform.util.SnowFlake;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -25,6 +28,8 @@ import java.util.List;
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
     @Resource
     private UserMapper userMapper;
+    @Resource
+    private CompanyMapper companyMapper;
 
     //管理员登录网页端
     @Override
@@ -91,15 +96,110 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
     //删除普通用户
     @Override
-    public HttpRespMsg deleteUser(String userId) {
+    public HttpRespMsg deleteUser(String userId, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            //删除用户之前首先要验证权限
+            User requester = userMapper.selectById(request.getHeader("Token"));
+            User target = userMapper.selectById(userId);
+            if (target == null) {
+                httpRespMsg.setError("未找到用户");
+            } else {
+                if (!requester.getCompanyId().equals(target.getRole())) {
+                    httpRespMsg.setError("只能删除同一公司人员的账号");
+                } else if (target.getRole() == 2) {
+                    httpRespMsg.setError("负责人账号不可删除");
+                } else if (target.getRole() == 3 && requester.getRole() != 2) {
+                    httpRespMsg.setError("只有负责人可以删除管理员账号");
+                } else {
+                    userMapper.deleteById(userId);
+                }
+            }
+        } catch (NullPointerException e) {
+            httpRespMsg.setError("验证失败");
+        }
+        return httpRespMsg;
+    }
+
+    //编辑密码
+    @Override
+    public HttpRespMsg editPassword(String originPassword, String newPassword, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            User requester = userMapper.selectById(request.getHeader("Token"));
+            //检验和之前的密码是否一致
+            if (MD5Util.getPassword(originPassword).equals(requester.getPassword())) {
+                requester.setPassword(MD5Util.getPassword(newPassword));
+                if (userMapper.updateById(requester) == 0) {
+                    httpRespMsg.setError("操作失败");
+                }
+            }
+        } catch (NullPointerException e) {
+            httpRespMsg.setError("验证失败");
+        }
+        return httpRespMsg;
+    }
+
+    //新增公司和负责人
+    @Override
+    public HttpRespMsg createCompany(String companyName, String name, String phone) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        User user = userMapper.selectById(userId);
-        if (user == null) {
-            httpRespMsg.setError("未找到用户");
-        } else if (user.getRole() != 0) {
-            httpRespMsg.setError("只能删除普通用户");
+        //首先检测用户名是否重复
+        if (userMapper.selectList(new QueryWrapper<User>().eq("phone", phone)).size() > 0) {
+            httpRespMsg.setError("电话号码重复");
         } else {
-            userMapper.deleteById(userId);
+            //首先生成一个新公司
+            Company company = new Company().setCompanyName(companyName);
+            companyMapper.insert(company);
+            //然后生成一个负责人
+            Long id = SnowFlake.nextId();
+            User user = new User()
+                    .setName(name)
+                    .setId(id.toString())
+                    .setPassword(MD5Util.getPassword("000000"))
+                    .setPhone(phone)
+                    .setRole(1)
+                    .setCompanyId(company.getId());
+            if (userMapper.insert(user) == 0) {
+                httpRespMsg.setError("操作失败");
+            } else {
+                httpRespMsg.data = user;
+            }
+        }
+        return httpRespMsg;
+    }
+
+    //新增用户
+    @Override
+    public HttpRespMsg insertUser(String name, String phone, Integer role, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            User creator = userMapper.selectById(request.getHeader("Token"));
+            //管理员只能新增员工
+            if (creator.getRole() == 2 && role != 0) {
+                httpRespMsg.setError("管理员只能新增普通员工");
+            } else if (role == 3) {
+                httpRespMsg.setError("不可新增负责人");
+            } else {
+                //电话号码列 检测重名
+                if (userMapper.selectList(new QueryWrapper<User>().eq("phone", phone)).size() > 0) {
+                    httpRespMsg.setError("电话号码重复");
+                } else {
+                    Long id = SnowFlake.nextId();
+                    User user = new User()
+                            .setName(name)
+                            .setId(id.toString())
+                            .setPassword(MD5Util.getPassword("000000"))
+                            .setPhone(phone)
+                            .setRole(role)
+                            .setCompanyId(creator.getCompanyId());
+                    if (userMapper.insert(user) == 0) {
+                        httpRespMsg.setError("操作失败");
+                    }
+                }
+            }
+        } catch (NullPointerException e) {
+            httpRespMsg.setError("验证失败");
         }
         return httpRespMsg;
     }

+ 124 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SnowFlake.java

@@ -0,0 +1,124 @@
+package com.management.platform.util;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Enumeration;
+
+public class SnowFlake {
+    private final static long twepoch = 12888349746579L;
+    // 机器标识位数
+    private final static long workerIdBits = 5L;
+    // 数据中心标识位数
+    private final static long datacenterIdBits = 5L;
+
+    // 毫秒内自增位数
+    private final static long sequenceBits = 12L;
+    // 机器ID偏左移12位
+    private final static long workerIdShift = sequenceBits;
+    // 数据中心ID左移17位
+    private final static long datacenterIdShift = sequenceBits + workerIdBits;
+    // 时间毫秒左移22位
+    private final static long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
+    //sequence掩码,确保sequnce不会超出上限
+    private final static long sequenceMask = -1L ^ (-1L << sequenceBits);
+    //上次时间戳
+    private static long lastTimestamp = -1L;
+    //序列
+    private long sequence = 0L;
+    //服务器ID
+    private long workerId = 1L;
+    private static long workerMask = -1L ^ (-1L << workerIdBits);
+    //进程编码
+    private long processId = 1L;
+    private static long processMask = -1L ^ (-1L << datacenterIdBits);
+
+    private static SnowFlake snowFlake = null;
+
+    static{
+        snowFlake = new SnowFlake();
+    }
+    public static synchronized long nextId(){
+        return snowFlake.getNextId();
+    }
+
+    private SnowFlake() {
+
+        //获取机器编码
+        this.workerId=this.getMachineNum();
+        //获取进程编码
+        RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
+        this.processId=Long.valueOf(runtimeMXBean.getName().split("@")[0]).longValue();
+
+        //避免编码超出最大值
+        this.workerId=workerId & workerMask;
+        this.processId=processId & processMask;
+    }
+
+    public synchronized long getNextId() {
+        //获取时间戳
+        long timestamp = timeGen();
+        //如果时间戳小于上次时间戳则报错
+        if (timestamp < lastTimestamp) {
+            try {
+                throw new Exception("Clock moved backwards.  Refusing to generate id for " + (lastTimestamp - timestamp) + " milliseconds");
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        //如果时间戳与上次时间戳相同
+        if (lastTimestamp == timestamp) {
+            // 当前毫秒内,则+1,与sequenceMask确保sequence不会超出上限
+            sequence = (sequence + 1) & sequenceMask;
+            if (sequence == 0) {
+                // 当前毫秒内计数满了,则等待下一秒
+                timestamp = tilNextMillis(lastTimestamp);
+            }
+        } else {
+            sequence = 0;
+        }
+        lastTimestamp = timestamp;
+        // ID偏移组合生成最终的ID,并返回ID
+        long nextId = ((timestamp - twepoch) << timestampLeftShift) | (processId << datacenterIdShift) | (workerId << workerIdShift) | sequence;
+        return nextId;
+    }
+
+    /**
+     * 再次获取时间戳直到获取的时间戳与现有的不同
+     * @param lastTimestamp
+     * @return 下一个时间戳
+     */
+    private long tilNextMillis(final long lastTimestamp) {
+        long timestamp = this.timeGen();
+        while (timestamp <= lastTimestamp) {
+            timestamp = this.timeGen();
+        }
+        return timestamp;
+    }
+
+    private long timeGen() {
+        return System.currentTimeMillis();
+    }
+
+    /**
+     * 获取机器编码
+     * @return
+     */
+    private long getMachineNum(){
+        long machinePiece;
+        StringBuilder sb = new StringBuilder();
+        Enumeration<NetworkInterface> e = null;
+        try {
+            e = NetworkInterface.getNetworkInterfaces();
+        } catch (SocketException e1) {
+            e1.printStackTrace();
+        }
+        while (e.hasMoreElements()) {
+            NetworkInterface ni = e.nextElement();
+            sb.append(ni.toString());
+        }
+        machinePiece = sb.toString().hashCode();
+        return machinePiece;
+    }
+}

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/desktop/index.vue

@@ -13,7 +13,7 @@
       <el-col :span="6" v-for="(item, index) in desktopList" :key="index" class="one_div">
         <el-card :body-style="{ padding: '0px' }" shadow="hover" class="one_card">
           <div class="one_card_img">
-            <el-image :src="this.pic_url" class="image" lazy>
+            <el-image :src="item.pic_url" class="image" lazy>
               <div slot="error" class="image-slot">
                 <el-image :src="require('../../assets/image/noPic.png')" class="image" lazy></el-image>
               </div>