package com.ydtech.modules.admin.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.modules.admin.dao.SysPcAddressMapper; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.dto.IpInfoDto; import com.ydtech.modules.admin.model.po.SysPcAddressHistory; import com.ydtech.modules.admin.model.po.SysPcAddress; import com.ydtech.modules.admin.service.SysPcAddressHistoryService; import com.ydtech.modules.admin.service.SysPcAddressService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; /** * @author Administrator * @description 针对表【sys_pc_address(pc获取ip地址)】的数据库操作Service实现 * @createDate 2024-09-02 09:40:08 */ @Service @RequiredArgsConstructor public class SysPcAddressServiceImpl extends ServiceImpl implements SysPcAddressService { private final SysPcAddressHistoryService sysPcAddressHistoryService; @Override @Transactional(rollbackFor = Exception.class) public void saveSysPcAddress(IpInfoDto ipInfoDto, SysUser user) { SysPcAddress sysPcAddress = getById(user.getId()); if (sysPcAddress == null) { sysPcAddress = new SysPcAddress(); } sysPcAddress.setUserId(user.getId()); sysPcAddress.setUserName(user.getName()); sysPcAddress.setIp(ipInfoDto.getIp()); sysPcAddress.setLatitude(ipInfoDto.getLat()); sysPcAddress.setLongitude(ipInfoDto.getLng()); sysPcAddress.setProv(ipInfoDto.getProv()); sysPcAddress.setCity(ipInfoDto.getCity()); sysPcAddress.setDistrict(ipInfoDto.getDistrict()); sysPcAddress.setAddress(ipInfoDto.getProv() + ipInfoDto.getCity() + ipInfoDto.getDistrict()); sysPcAddress.setOperationTime(new Date()); SysPcAddressHistory sysPcAddressHistory = new SysPcAddressHistory(); BeanUtils.copyProperties(sysPcAddress, sysPcAddressHistory); this.saveOrUpdate(sysPcAddress); sysPcAddressHistoryService.save(sysPcAddressHistory); } @Override public List getEveryone() { return list(); } }