Explorar el Código

批量修改密码

home hace 2 años
padre
commit
6045ea7f78

+ 7 - 0
hx-service-api/storage-api/pom.xml

@@ -16,4 +16,11 @@
         <maven.compiler.target>8</maven.compiler.target>
     </properties>
 
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-starter-excel</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>

+ 139 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/acc/AccAccount.java

@@ -0,0 +1,139 @@
+package com.fjhx.entity.acc;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 全局账号
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-15
+ */
+@Data
+public class AccAccount implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 账号
+     */
+    @TableField("AccountNo")
+    private String accountno;
+
+    /**
+     * 密码
+     */
+    @TableField("Password")
+    private String password;
+
+    /**
+     * 最后活跃时间
+     */
+    @TableField("LastActiveTime")
+    private Date lastactivetime;
+
+    /**
+     * 设备号 用于推送
+     */
+    @TableField("MobileID")
+    private String mobileid;
+
+    /**
+     * Token过期时间
+     */
+    @TableField("ExpireTime")
+    private Date expiretime;
+
+    /**
+     * 最后的登陆标识
+     */
+    @TableField("Token")
+    private String token;
+
+    /**
+     * 登陆ip
+     */
+    @TableField("Ip")
+    private String ip;
+
+    /**
+     * 是否修改了密码
+     */
+    @TableField("IsChangedPassword")
+    private Boolean ischangedpassword;
+
+    /**
+     * 链接id
+     */
+    @TableField("HubConnectionID")
+    private String hubconnectionid;
+
+    /**
+     * app设备 (枚举定义:1=Web,2=Ios,4=Android,8=Device,16=App)
+     */
+    @TableField("AppCode")
+    private Integer appcode;
+
+    /**
+     * Token过期时间
+     */
+    @TableField("MoblieExpireTime")
+    private Date moblieexpiretime;
+
+    /**
+     * 登陆ip
+     */
+    @TableField("MoblieIp")
+    private String moblieip;
+
+    /**
+     * 最后的登陆标识
+     */
+    @TableField("MoblieToken")
+    private String moblietoken;
+
+    /**
+     * 当前登录角色
+     */
+    @TableField("LoginRoleKey")
+    private String loginrolekey;
+
+    /**
+     * Token过期时间
+     */
+    @TableField("IntegratedExpireTime")
+    private Date integratedexpiretime;
+
+    /**
+     * 登陆ip
+     */
+    @TableField("IntegratedIp")
+    private String integratedip;
+
+    /**
+     * 最后的登陆标识
+     */
+    @TableField("IntegratedToken")
+    private String integratedtoken;
+
+    /**
+     * 是否注册人脸
+     */
+    @TableField("IsRegisterFace")
+    private Boolean isregisterface;
+
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/acc/AccAccountEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.acc;
+
+import com.fjhx.entity.acc.AccAccount;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 全局账号
+ *
+ * @author ${author}
+ * @since 2022-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AccAccountEx extends AccAccount {
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/acc/AccAccountVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.acc;
+
+import com.fjhx.entity.acc.AccAccount;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 全局账号
+ *
+ * @author ${author}
+ * @since 2022-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AccAccountVo extends AccAccount {
+
+}

+ 52 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/acc/AccountExcel.java

@@ -0,0 +1,52 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.fjhx.params.acc;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * RegionExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(20)
+@HeadRowHeight(23)
+@ContentRowHeight(18)
+public class AccountExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	@ExcelProperty("用户姓名")
+	private String realName;
+
+	@ExcelProperty("工号")
+	private String jobNo;
+
+	@ExcelProperty("账号")
+	private String accountNo;
+
+	@ExcelProperty("密码")
+	private String password;
+
+}

+ 37 - 0
hx-service/storage/src/main/java/com/fjhx/acc/controller/AccAccountController.java

@@ -0,0 +1,37 @@
+package com.fjhx.acc.controller;
+
+import com.fjhx.acc.service.AccAccountService;
+import com.fjhx.params.acc.AccountExcel;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * 全局账号 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-15
+ */
+@RestController
+@RequestMapping("/accAccount")
+public class AccAccountController {
+
+    @Autowired
+    private AccAccountService accAccountService;
+
+    @GetMapping("/refreshPassword")
+    public void refreshPassword(HttpServletResponse response) {
+        List<AccountExcel> list = accAccountService.refreshPassword();
+        ExcelUtil.export(response, "员工账号密码" + DateUtil.time(), "员工账号密码", list, AccountExcel.class);
+    }
+
+}
+

+ 21 - 0
hx-service/storage/src/main/java/com/fjhx/acc/mapper/AccAccountMapper.java

@@ -0,0 +1,21 @@
+package com.fjhx.acc.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.entity.acc.AccAccount;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 全局账号 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-15
+ */
+public interface AccAccountMapper extends BaseMapper<AccAccount> {
+
+    List<Map<String, Object>> getList();
+
+}

+ 15 - 0
hx-service/storage/src/main/java/com/fjhx/acc/mapper/AccAccountMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.acc.mapper.AccAccountMapper">
+
+    <select id="getList" resultType="java.util.Map">
+        select uu.ID        id,
+               uu.RealName  realName,
+               uu.JobNo     jobNo,
+               aa.AccountNo accountNo
+        from u_user uu
+                 left join acc_account aa on uu.ID = aa.ID
+        where aa.AccountNo != 'admin'
+    </select>
+
+</mapper>

+ 32 - 0
hx-service/storage/src/main/java/com/fjhx/acc/service/AccAccountService.java

@@ -0,0 +1,32 @@
+package com.fjhx.acc.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.acc.AccAccount;
+import com.fjhx.params.acc.AccAccountVo;
+import com.fjhx.base.BaseService;
+import com.fjhx.params.acc.AccountExcel;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 全局账号 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-15
+ */
+public interface AccAccountService extends BaseService<AccAccount> {
+
+    Page<AccAccount> getPage(Map<String, String> condition);
+
+    void add(AccAccountVo accAccountVo);
+
+    void edit(AccAccountVo accAccountVo);
+
+    void delete(AccAccountVo accAccountVo);
+
+    List<AccountExcel> refreshPassword();
+
+}

+ 96 - 0
hx-service/storage/src/main/java/com/fjhx/acc/service/impl/AccAccountServiceImpl.java

@@ -0,0 +1,96 @@
+package com.fjhx.acc.service.impl;
+
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.crypto.SecureUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.acc.mapper.AccAccountMapper;
+import com.fjhx.acc.service.AccAccountService;
+import com.fjhx.entity.acc.AccAccount;
+import com.fjhx.params.acc.AccAccountVo;
+import com.fjhx.params.acc.AccountExcel;
+import com.fjhx.utils.WrapperUtil;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 全局账号 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-15
+ */
+@Service
+public class AccAccountServiceImpl extends ServiceImpl<AccAccountMapper, AccAccount> implements AccAccountService {
+
+    @Autowired
+    private BladeRedis bladeRedis;
+
+    @Override
+    public Page<AccAccount> getPage(Map<String, String> condition) {
+
+        QueryWrapper<AccAccount> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<AccAccount> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(AccAccountVo accAccountVo) {
+        save(accAccountVo);
+    }
+
+    @Override
+    public void edit(AccAccountVo accAccountVo) {
+        updateById(accAccountVo);
+    }
+
+    @Override
+    public void delete(AccAccountVo accAccountVo) {
+        removeById(accAccountVo.getId());
+    }
+
+    @Override
+    public List<AccountExcel> refreshPassword() {
+
+        List<Map<String, Object>> list = baseMapper.getList();
+
+        List<AccountExcel> accountExcelList = new ArrayList<>();
+
+        List<AccAccount> accAccountList = list.stream().map(item -> {
+            AccountExcel accountExcel = BeanUtil.toBean(item, AccountExcel.class);
+            String password = RandomUtil.randomString(8);
+            String md5 = SecureUtil.md5(password);
+            accountExcel.setPassword(password);
+            accountExcelList.add(accountExcel);
+
+            AccAccount accAccount = new AccAccount();
+            accAccount.setId(item.get("id").toString());
+            accAccount.setPassword(md5);
+            return accAccount;
+        }).collect(Collectors.toList());
+
+        // 批量修改密码
+        updateBatchById(accAccountList);
+
+        Set<String> keys = bladeRedis.keys("*");
+        bladeRedis.del(keys);
+
+        return accountExcelList;
+    }
+
+}