Просмотр исходного кода

fix 脚本修改密码记录操作日志

zoujiajian 3 лет назад
Родитель
Сommit
ae540ef6d7

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/AutoUpdateAccountPwdLogMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.AutoUpdateAccountPwdLog;
+
+/*
+ *项目名: netflix
+ *文件名: AutoUpdateAccountPwdLogMapper
+ *创建者: JavaZou
+ *创建时间:2023/3/31 16:57
+ */
+public interface AutoUpdateAccountPwdLogMapper extends BaseMapper<AutoUpdateAccountPwdLog> {
+}

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/AutoUpdateAccountPwdLog.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: AutoUpdateAccountPwdLog
+ *创建者: JavaZou
+ *创建时间:2023/3/31 16:56
+ */
+@Getter
+@Setter
+public class AutoUpdateAccountPwdLog extends BaseEntity{
+	private Long accountId;
+
+	private String account;
+
+	private String oldPwd;
+
+	private String newPwd;
+
+	private String operateLocation;
+
+	private String operateIp;
+}

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/mange/CmsAccountService.java

@@ -22,4 +22,6 @@ public interface CmsAccountService extends IService<Account> {
 	List<OrderDon> getNoAppleOneOrderDon(List<Long> skuIds, Date yesZeroDate, Date thisZeroDate, List<String> noOrderStatus);
 	List<OrderDon> getNoAppleOneOrderDon(List<Long> skuIds, Date yesZeroDate, Date thisZeroDate, List<String> noOrderStatus);
 
 
 	List<ExcelAccountData> getExpiredAccountViewNoPage(Boolean isCorpWx, String customerService, Integer goodsId, String account, Boolean renewStatus, Boolean handleStatus, String cnAccount, String usAccount, Integer userId, String startDate, String endDate, String toString);
 	List<ExcelAccountData> getExpiredAccountViewNoPage(Boolean isCorpWx, String customerService, Integer goodsId, String account, Boolean renewStatus, Boolean handleStatus, String cnAccount, String usAccount, Integer userId, String startDate, String endDate, String toString);
+
+	void recordAutoUpdatePwd(Long accountId, String account, String oldPwd, String newPwd, String operateIp);
 }
 }

+ 42 - 0
netflix-service/src/main/java/com/cyksj/service/mange/account/CmsAccountServiceImpl.java

@@ -1,10 +1,16 @@
 package com.cyksj.service.mange.account;
 package com.cyksj.service.mange.account;
 
 
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.mapper.AccountMapper;
 import com.cyksj.mapper.AccountMapper;
+import com.cyksj.mapper.manage.AutoUpdateAccountPwdLogMapper;
 import com.cyksj.model.entity.Account;
 import com.cyksj.model.entity.Account;
+import com.cyksj.model.entity.AutoUpdateAccountPwdLog;
 import com.cyksj.model.entity.OrderDon;
 import com.cyksj.model.entity.OrderDon;
 import com.cyksj.model.excel.ExcelAccountData;
 import com.cyksj.model.excel.ExcelAccountData;
 import com.cyksj.model.views.ExpiredAccountDataView;
 import com.cyksj.model.views.ExpiredAccountDataView;
@@ -26,6 +32,8 @@ import java.util.List;
 public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> implements CmsAccountService {
 public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> implements CmsAccountService {
 	private final AccountMapper accountMapper;
 	private final AccountMapper accountMapper;
 
 
+	private final AutoUpdateAccountPwdLogMapper autoUpdateAccountPwdLogMapper;
+
 	@Override
 	@Override
 	public IPage<ExpiredAccountDataView> getExpiredAccountView(Boolean isCorpWx, String customerService, Integer goodsId, String account, Boolean renewStatus, Boolean handleStatus, String cnAccount, String usAccount, Integer userId, String startTime, String endTime, String now, Long offset, Long limit) {
 	public IPage<ExpiredAccountDataView> getExpiredAccountView(Boolean isCorpWx, String customerService, Integer goodsId, String account, Boolean renewStatus, Boolean handleStatus, String cnAccount, String usAccount, Integer userId, String startTime, String endTime, String now, Long offset, Long limit) {
 		return accountMapper.getExpiredAccountView(isCorpWx, customerService, goodsId, account, renewStatus, handleStatus, cnAccount, usAccount, userId, startTime, endTime, now, new Page<>(offset, limit));
 		return accountMapper.getExpiredAccountView(isCorpWx, customerService, goodsId, account, renewStatus, handleStatus, cnAccount, usAccount, userId, startTime, endTime, now, new Page<>(offset, limit));
@@ -46,4 +54,38 @@ public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> i
 		return accountMapper.getNoAppleOneOrderDon(skuIds, yesZeroDate, thisZeroDate, noOrderStatus);
 		return accountMapper.getNoAppleOneOrderDon(skuIds, yesZeroDate, thisZeroDate, noOrderStatus);
 	}
 	}
 
 
+	@Override
+	public void recordAutoUpdatePwd(Long accountId, String account, String oldPwd, String newPwd, String operateIp) {
+		AutoUpdateAccountPwdLog log = new AutoUpdateAccountPwdLog();
+
+		log.setAccountId(accountId);
+		log.setAccount(account);
+		log.setOldPwd(oldPwd);
+		log.setNewPwd(newPwd);
+		log.setOperateLocation(getRealAddressByIP(operateIp));
+		log.setOperateIp(operateIp);
+
+		autoUpdateAccountPwdLogMapper.insert(log);
+	}
+
+	public String getRealAddressByIP(String ip) {
+		if (StrUtil.isBlank(ip)) {
+			return "unknown";
+		}
+		try {
+			String rspStr = HttpUtil.get("http://whois.pconline.com.cn/ipJson.jsp?ip=" + ip + "&json=true");
+			if (StrUtil.isEmpty(rspStr)) {
+				log.error("获取地理位置异常 {}", ip);
+				return "unknown";
+			}
+			JSONObject obj = JSONUtil.parseObj(rspStr);
+			String region = obj.getStr("pro");
+			String city = obj.getStr("city");
+			return String.format("%s %s", region, city);
+		} catch (Exception e) {
+			log.error("获取地理位置异常 {}", ip);
+		}
+
+		return "unknown";
+	}
 }
 }

+ 4 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -3,6 +3,7 @@ package com.cyksj.web.controller.manage.account;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.servlet.ServletUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.excel.event.AnalysisEventListener;
@@ -273,6 +274,7 @@ public class CmsAccountController {
 			return GatewayResponse.FAIL.newBuilder().toResult("账号不存在");
 			return GatewayResponse.FAIL.newBuilder().toResult("账号不存在");
 		}
 		}
 		Boolean flag = false;
 		Boolean flag = false;
+		String oldPwd = account.getPassword();
 		if (account != null) {
 		if (account != null) {
 			if (accountReq.getExpiryTime() != null) {
 			if (accountReq.getExpiryTime() != null) {
 				account.setExpiryTime(accountReq.getExpiryTime());
 				account.setExpiryTime(accountReq.getExpiryTime());
@@ -284,6 +286,8 @@ public class CmsAccountController {
 				flag = true;
 				flag = true;
 				//发放模板消息
 				//发放模板消息
 				templateCommonService.sendAccountTemplateMsg(account);
 				templateCommonService.sendAccountTemplateMsg(account);
+				//记录操作日志
+				accountService.recordAutoUpdatePwd(account.getId(), account.getAccount(), oldPwd, new_pass, ServletUtil.getClientIP(request));
 			}
 			}
 			if (flag) {
 			if (flag) {
 				accountService.updateById(account);
 				accountService.updateById(account);