package com.matrix.system.dataMove; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.matrix.component.redis.RedisClient; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.SysUsersDao; import com.matrix.system.common.tools.PasswordUtil; import com.matrix.system.hive.bean.SysShopInfo; import com.matrix.system.hive.dao.SysShopInfoDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.util.*; /** * @author wzy * @date 2021-03-18 **/ @Service public class DateMoveServiceImpl { @Autowired private JdbcTemplate jdbcTemplate; @Autowired private SysShopInfoDao sysShopInfoDao; @Autowired private SysUsersDao sysUsersDao; @Autowired private RedisClient redisClient; private Long companyId = 35L; public List> dataMove() { return jdbcTemplate.queryForList("select * from sys_vip_info limit 10"); } public List mapsToListBean(List> maps, Class t) { List list = new ArrayList<>(); for (Map map : maps) { String s = JSONObject.toJSONString(map); T object = JSONObject.parseObject(s, t); list.add(object); } return list; } /** * 旧系统商店数据 * * @return */ @DS("slave") public List oldShopInfo() { List> maps = jdbcTemplate.queryForList("select * from sys_shop_info"); List shopInfos = new ArrayList<>(); for (Map map : maps) { String s = JSONObject.toJSONString(map); SysShopInfo sysShopInfo = JSONObject.parseObject(s, SysShopInfo.class); shopInfos.add(sysShopInfo); } return shopInfos; } public void toNewShopInfo(List shopInfos) { if (CollUtil.isNotEmpty(shopInfos)) { Map oldAndNewId = new HashMap<>(); for (SysShopInfo shopInfo : shopInfos) { if (shopInfo.getShopName().equals("总部")) { shopInfo.setShopType(1); shopInfo.setIsOpenNet(2); } else { shopInfo.setShopType(2); shopInfo.setIsOpenNet(1); } shopInfo.setShopShortName(shopInfo.getShopName()); shopInfo.setCompanyId(companyId); SysShopInfo query = new SysShopInfo(); query.setShopNo(shopInfo.getShopNo()); Long oldId = shopInfo.getId(); shopInfo.setId(null); // TODO 若迁往正式环境,这里需要变动 if (!shopInfo.getShopName().contains("美度") && !shopInfo.getShopName().contains("总店")) { sysShopInfoDao.insert(shopInfo); oldAndNewId.put(oldId, shopInfo.getId()); } else { SysShopInfo sysShopInfo = sysShopInfoDao.selectByShopName(shopInfo.getShopName()); oldAndNewId.put(oldId, sysShopInfo.getId()); } } redisClient.saveMapValue("shopId", oldAndNewId); } } @DS("slave") public List oldSysUsers() throws UnsupportedEncodingException, NoSuchAlgorithmException { List> maps = jdbcTemplate.queryForList("select * from users"); List list = new ArrayList<>(); String shopIds = redisClient.getCachedValue("shopId"); Map shopMap = JSONObject.parseObject(shopIds, Map.class); for (Map map : maps) { SysUsers sysUsers = new SysUsers(); sysUsers.setSuAccount((String) map.get("account")); sysUsers.setSuId((Long) map.get("id")); sysUsers.setSuName((String) map.get("name")); sysUsers.setSuTel((String) map.get("tel")); sysUsers.setSuPhoto((String) map.get("photo")); sysUsers.setSuEmail((String) map.get("email")); sysUsers.setSuUserType((String) map.get("user_type")); sysUsers.setSuAccountStatus((String) map.get("account_status")); sysUsers.setSuValid("Y"); sysUsers.setCompanyId(companyId); Long aaa = (Long) map.get("shop_id"); System.out.println(aaa); if (aaa != null) { Integer shopId = (Integer) shopMap.get(aaa.toString()); if (shopId != null) { sysUsers.setShopId(Long.parseLong(shopId.toString())); } } sysUsers.setSuRegisterTime((Date) map.get("register_time")); sysUsers.setCreateBy(AppConstance.SYSTEM_USER); sysUsers.setUpdateBy(AppConstance.SYSTEM_USER); sysUsers.setSuPassword(PasswordUtil.getEncrypUserPwd(sysUsers)); list.add(sysUsers); } return list; } @Transactional public void newSysUsers(List list) { if (CollUtil.isNotEmpty(list)) { Map sysUsersOldAndNew = new HashMap<>(); for (SysUsers sysUsers : list) { Long oldId = sysUsers.getSuId(); sysUsers.setSuId(null); sysUsersDao.insert(sysUsers); sysUsersOldAndNew.put(oldId, sysUsers.getSuId()); } redisClient.saveMapValue("sys_users", sysUsersOldAndNew); } } }