diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/AESCBCUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/AESCBCUtil.java new file mode 100644 index 0000000..a8966b7 --- /dev/null +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/encryption/AESCBCUtil.java @@ -0,0 +1,149 @@ +package com.bonus.common.core.utils.encryption; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.security.Security; +import java.util.Arrays; + +/** + * + * AES加密工具类 + */ +@Slf4j +@Component +public class AESCBCUtil { + + //使用AES-256-CBC加密模式,key需要为16位,key和iv可以相同! + /** + * 密钥算法 + */ + private static final String KEY_ALGORITHM = "AES"; + + /** + * 加密/解密算法 / 工作模式 / 填充方式 + * Java 6支持PKCS5Padding填充方式 + * Bouncy Castle支持PKCS7Padding填充方式 + */ + private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS7Padding"; + + /** + * 偏移量,只有CBC模式才需要 + */ + private final static String ivParameter = "1234567812345678"; + + + /** + * AES要求密钥长度为128位或192位或256位,java默认限制AES密钥长度最多128位 + */ + public static String sKey = "zhst@bonus@zhst@bonus@1234567890"; + + /** + * 编码格式 + */ + public static final String ENCODING = "utf-8"; + + static { + //如果是PKCS7Padding填充方式,则必须加上下面这行 + Security.addProvider(new BouncyCastleProvider()); + } + + /** + * AES加密 + *(CBC模式) + * @param source 源字符串 + * @param + * @throws Exception + * @return 加密后的密文 + */ + public static String encrypt(String source) throws Exception { + String key=sKey; + byte[] sourceBytes = source.getBytes(ENCODING); + byte[] keyBytes = key.getBytes(ENCODING); + Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM, "BC"); + IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes(ENCODING)); + cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(keyBytes, KEY_ALGORITHM), iv); + byte[] decrypted = cipher.doFinal(sourceBytes); + return Base64.encodeBase64String(decrypted); + } + + /** + * AES解密 + *(CBC模式) + * @param encryptStr 加密后的密文 + * @param + * @throws Exception + * @return 源字符串 + */ + public static String decrypt(String encryptStr) { + try{ + String key=sKey; + byte[] sourceBytes = Base64.decodeBase64(encryptStr); + byte[] keyBytes = key.getBytes(ENCODING); + + int base = 16; + if (keyBytes.length % base != 0) { + int groups = keyBytes.length / base + 1; + byte[] temp = new byte[groups * base]; + Arrays.fill(temp, (byte) 0); + System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length); + keyBytes = temp; + } + Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM, "BC"); + IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes(ENCODING)); + cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(keyBytes, KEY_ALGORITHM), iv); + byte[] decoded = cipher.doFinal(sourceBytes); + return new String(decoded, ENCODING); + }catch (Exception e){ + log.error(e.toString(),e); + } + return ""; + } + + + public static void main(String[] args) throws Exception { + String jmData= AESCBCUtil.encrypt("Bonus@admin123"); + System.out.println("加密后字符串:" + jmData); + String data= AESCBCUtil.decrypt(jmData); + System.out.println("解密后的字串是:" + data); + + /*String key = "1234567812345678"; + // 加密 + long lStart = System.currentTimeMillis(); + String enString = AESCBCUtils.encrypt("2023-06-06", AESCBCUtils.sKey); + System.out.println("加密后的字串是:" + enString); + enString = AESCBCUtils.encrypt("Bonus@admin123", AESCBCUtils.sKey); + System.out.println("加密后的字串是:" + enString); + long lUseTime = System.currentTimeMillis() - lStart; + System.out.println("加密耗时:" + lUseTime + "毫秒"); + + // 解密 + lStart = System.currentTimeMillis(); + String DeString = AESCBCUtils.decrypt("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"); + System.out.println("解密后的字串是:" + DeString); + lUseTime = System.currentTimeMillis() - lStart; + System.out.println("解密耗时:" + lUseTime + "毫秒");*/ +// String key = "1234567812345678"; +// // 加密 +// long lStart = System.currentTimeMillis(); +// String enString = AESCBCUtils.encrypt("admin@123", AESCBCUtils.sKey); +// String enString2 = AESCBCUtils.encrypt("cwchen", AESCBCUtils.sKey); +// String enString3 = AESCBCUtils.encrypt("1", AESCBCUtils.sKey); +// String enString4= AESCBCUtils.encrypt("10", AESCBCUtils.sKey); +// String name=""; +// for (int i = 0; i <70 ; i++) { +// name="admin"+i; +// String pwd= AESCBCUtils.encrypt(name,AESCBCUtils.sKey); +// System.out.println("用户名:"+name+" "+"加密后密码:"+pwd); +// } + } + + + +} diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/domain/BaseEntity.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/domain/BaseEntity.java index a983d68..1424b65 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/domain/BaseEntity.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/web/domain/BaseEntity.java @@ -32,7 +32,7 @@ public class BaseEntity implements Serializable private String updateBy; /** 更新时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date updateTime; /** 备注 */ diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java index b61ff5d..d8a4683 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/AttTasks.java @@ -60,7 +60,7 @@ public class AttTasks { private volatile boolean executed = false; // 标志位,表示任务是否已经执行过 // @Scheduled(cron = "0 0/10 * * * ?") -// @Scheduled(fixedDelay = 60000 * 10) + @Scheduled(initialDelay = 60000 * 5,fixedDelay = 60000 * 10) @Async public void getAttTasks() { log.info("--------考勤定时器开启------"); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/WechatTasks.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/WechatTasks.java index 5651dea..27bf120 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/WechatTasks.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/tasks/WechatTasks.java @@ -4,11 +4,15 @@ import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.bonus.common.core.utils.DateTimeHelper; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.FastJsonHelper; import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.core.utils.encryption.AESCBCUtil; +import com.bonus.common.core.utils.encryption.AesCbcUtils; import com.bonus.system.api.domain.SysUser; import com.bonus.system.att.dao.AttGroupDao; import com.bonus.system.att.dao.AttSourceDataDao; @@ -23,6 +27,7 @@ import com.bonus.system.evection.entity.EvectionBean; import com.bonus.system.holiday.entity.HolidayBean; import com.bonus.system.index.entity.MapBean; import lombok.extern.slf4j.Slf4j; +import okhttp3.*; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.MappedPropertyDescriptor; import org.mybatis.spring.SqlSessionTemplate; @@ -33,6 +38,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import javax.annotation.Resource; +import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -62,17 +68,14 @@ public class WechatTasks { @Resource(name = "WechatPushDao") private WechatPushDao dao; - @Resource(name = "sqlSessionTemplate") - private SqlSessionTemplate sqlSessionTemplate; - @Resource(name = "attGroupDao") - private AttGroupDao attGroupDao; + private String token; /** * 人员基础数据同步定时器 */ // @Scheduled(cron = "0 0/10 * * * ?") -// @Scheduled(initialDelay = 1000 * 6,fixedDelay = 60000 * 10) + @Scheduled(initialDelay = 60000 * 1,fixedDelay = 60000 * 1) @Async public void pushPersonTask() { log.info("--------人员基础数据同步定时器开启------"); @@ -100,7 +103,7 @@ public class WechatTasks { /** * 休假出差数据同步定时器 */ -// @Scheduled(fixedDelay = 60000 * 10) + @Scheduled(initialDelay = 60000 * 2,fixedDelay = 60000 * 1) @Async public void leaveTask() { log.info("--------休假出差数据定时器开启------"); @@ -179,12 +182,11 @@ public class WechatTasks { /** * 考勤数据同步定时器 */ - @Scheduled(fixedDelay = 60000 * 10) + @Scheduled(initialDelay = 60000 * 3,fixedDelay = 60000 * 1) @Async public void wechatAttTask() { log.info("--------考勤数据定时器开启------"); // //小程序库人员考勤 -// List attSourceList = dao.getWechatAttList(); String jsonStr = "{}"; String method = "getWechatAttList"; String string = httpPost(method, jsonStr); @@ -238,8 +240,10 @@ public class WechatTasks { attSourceList.forEach(c -> { if(c.getIdNumber() != null){ MapBean mapBean= dao.getProOrgToQsy(c); - c.setProId(mapBean.getProId()); - c.setOrgId(String.valueOf(mapBean.getOrgId())); + if(mapBean != null){ + c.setProId(mapBean.getProId()); + c.setOrgId(String.valueOf(mapBean.getOrgId())); + } } }); //2.推送到人员考勤表 @@ -329,16 +333,17 @@ public class WechatTasks { private String httpPost(String method, String jsonStr) { try { - HttpResponse response = HttpRequest.post(IpAndPathConfig.getWechatUrl() + "/" + method) - .header("Content-Type", "application/json") - .body(jsonStr) - .execute(); -// HttpResponse response = HttpRequest.post(IpAndPathConfig.getWechatUrl() + "/" + method) +// HttpResponse response = HttpRequest.post(IpAndPathConfig.getWechatUrl() + "/wechatData/" + method) // .header("Content-Type", "application/json") -// .header("Authorization",token) // 添加Token到请求头 // .body(jsonStr) // .execute(); + HttpResponse response = HttpRequest.post(IpAndPathConfig.getWechatUrl() + "/wechatData/" + method) + .header("Content-Type", "application/json") + .header("token",token) // 添加Token到请求头 + .body(jsonStr) + .execute(); int statusCode = response.getStatus(); + System.out.println(response.body()); JSONObject jsonObject = FastJsonHelper.jsonStrToJsonObj(response.body()); return jsonObject.getString("obj"); } catch (Exception e) { @@ -381,4 +386,47 @@ public class WechatTasks { } + @Scheduled(initialDelay = 1000,fixedDelay = 60000 * 10) + @Async + public void login() { + wechatLogin(); + } + public void wechatLogin() { + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); + RequestBody body = null; + try { +// body = RequestBody.create(mediaType, "username=15240004260&password=GZkq@123456!"); + body = RequestBody.create(mediaType, "username="+ AESCBCUtil.encrypt("15240004260")+"&password="+AESCBCUtil.encrypt("GZkq@123456!")); + } catch (Exception e) { + throw new RuntimeException(e); + } + Request request = new Request.Builder() + .url(IpAndPathConfig.getWechatUrl() + "/login") + .method("POST", body) + .addHeader("Connection", "keep-alive") + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .build(); + try (Response response = client.newCall(request).execute()) { + if (!response.isSuccessful()) { + throw new IOException("Unexpected code " + response); + } + // 读取响应体为字符串 + String responseBody = response.body().string(); + // 使用FastJSON2解析JSON并映射到JSONObject + JSONObject jsonObject = JSON.parseObject(responseBody); + // 提取token字段 + this.token = jsonObject.getString("token"); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + public static void main(String[] args) throws Exception { + String encrypt = AESCBCUtil.encrypt("GZkq@123456!"); + System.out.println(encrypt); + } + } \ No newline at end of file diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/controller/SysUserController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/controller/SysUserController.java index 8ba906b..fd590b6 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/controller/SysUserController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/basic/controller/SysUserController.java @@ -277,10 +277,10 @@ public class SysUserController extends BaseController { } /** - * 审批项目部角色配置 + * 配置 */ @PostMapping("checkPersonAssignment") - @Log(title = "项目部管理->项目部角色管理->项目部角色审批", businessType = BusinessType.UPDATE) + @Log(title = "人员管理->人员管理->人脸审批", businessType = BusinessType.UPDATE) public AjaxResult checkPersonAssignment(@RequestBody SysUser bean) { try{ wechatTasks.checkWechatIsFace(bean); diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/basic/SysUserMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/basic/SysUserMapper.xml index a9e66a5..ebd5719 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/basic/SysUserMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/basic/SysUserMapper.xml @@ -74,7 +74,13 @@ - UPDATE sys_user_face SET `is_check` = #{isCheck}, `examine_opinion` = #{examineOpinion} WHERE `user_id` = #{userId} + UPDATE sys_user_face SET + `is_check` = #{isCheck}, + `examine_opinion` = #{examineOpinion} + WHERE `user_id` = #{userId}; + + update sys_user set is_face = 0 where user_id = #{userId} +