个人资料页改造-地区初始化小工具
This commit is contained in:
@@ -18,7 +18,7 @@ import java.util.List;
|
||||
@Service
|
||||
public class AccountLoginRecordService extends BaseService {
|
||||
@Autowired
|
||||
AccountLoginRecordMapper accountLoginRecordMapper;
|
||||
private AccountLoginRecordMapper accountLoginRecordMapper;
|
||||
|
||||
public PageInfo<AccountLoginRecord> getAccountLoginRecordList(Integer pageSize, Integer pageNum, Long erbanNo, String phone, Integer loginType, String deviceId) {
|
||||
AccountLoginRecordExample accountLoginRecordExample = new AccountLoginRecordExample();
|
||||
|
@@ -10,14 +10,21 @@ import com.accompany.business.service.activities.vo.LuckySeaRankListVo;
|
||||
import com.accompany.business.service.clan.ClanGoldDayFlowService;
|
||||
import com.accompany.business.service.headwear.HeadwearService;
|
||||
import com.accompany.business.service.push.EnterpriseWechatPushService;
|
||||
import com.accompany.business.service.region.RegionService;
|
||||
import com.accompany.business.service.room.RoomReciveRankingService;
|
||||
import com.accompany.business.service.room.RoomSendRankingService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.common.config.WebSecurityConfig;
|
||||
import com.accompany.common.push.MarkdownMessage;
|
||||
import com.accompany.common.redis.RedisKey;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.AccountLoginRecord;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.model.UsersExample;
|
||||
import com.accompany.core.mybatismapper.AccountLoginRecordMapper;
|
||||
import com.accompany.core.mybatismapper.UsersMapper;
|
||||
import com.accompany.core.service.common.JedisService;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.common.collect.Lists;
|
||||
@@ -25,6 +32,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -67,6 +75,14 @@ public class MyApiService {
|
||||
private EnterpriseWechatPushService enterpriseWechatPushService;
|
||||
@Autowired
|
||||
private WebSecurityConfig webSecurityConfig;
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
@Autowired
|
||||
private UsersMapper usersMapper;
|
||||
@Autowired
|
||||
private AccountLoginRecordMapper accountLoginRecordMapper;
|
||||
@Autowired
|
||||
private RegionService regionService;
|
||||
|
||||
private Map<String, Future> futureMap = new ConcurrentHashMap<>();
|
||||
|
||||
@@ -193,4 +209,30 @@ public class MyApiService {
|
||||
enterpriseWechatPushService.pushMessageByKey(webSecurityConfig.getActivityEnterpriseWechatPushKey(), msg);
|
||||
}
|
||||
}
|
||||
|
||||
public void initRegion() {
|
||||
UsersExample example = new UsersExample();
|
||||
example.createCriteria().andRegionIsNull();
|
||||
List<Users> nullRegionUser = usersMapper.selectByExample(example);
|
||||
if (CollectionUtils.isEmpty(nullRegionUser)){
|
||||
return;
|
||||
}
|
||||
List<List<Users>> userList = Lists.partition(nullRegionUser, 100);
|
||||
for (List<Users> a: userList){
|
||||
bizExecutor.execute(()->{
|
||||
List<Long> uids = a.stream().map(Users::getUid).collect(Collectors.toList());
|
||||
List<AccountLoginRecord> b = accountLoginRecordMapper.getLastLoginIpByUids(uids);
|
||||
for (AccountLoginRecord alr: b){
|
||||
String region = regionService.getCountry(alr.getLoginIp());
|
||||
Users u = new Users();
|
||||
u.setRegion(region);
|
||||
UsersExample e = new UsersExample();
|
||||
e.createCriteria().andUidEqualTo(alr.getUid());
|
||||
usersMapper.updateByExampleSelective(u, e);
|
||||
usersService.deleteUserRelateCachesByUid(alr.getUid());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -110,4 +110,14 @@ public class MyApiController {
|
||||
myApiService.pushLuckySeaAWechat(date);
|
||||
return new BusiResult<>(BusiStatus.SUCCESS);
|
||||
}
|
||||
|
||||
@RequestMapping("/initRegion")
|
||||
@ResponseBody
|
||||
public BusiResult<Void> initRegion(Long roomId) {
|
||||
if (null == roomId || !roomId.equals(603L)){
|
||||
throw new ServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
myApiService.initRegion();
|
||||
return new BusiResult<>(BusiStatus.SUCCESS);
|
||||
}
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||
@Controller
|
||||
@RequestMapping("/admin")
|
||||
public class AccountLoginRecordController extends BaseController {
|
||||
private static final Logger logger = LoggerFactory.getLogger(AccountLoginRecordController.class);
|
||||
|
||||
@Autowired
|
||||
private AccountLoginRecordService accountLoginRecordService;
|
||||
/**
|
||||
|
@@ -1,7 +1,5 @@
|
||||
package com.accompany.core.mybatismapper;
|
||||
|
||||
import com.accompany.core.model.AccountLoginRecord;
|
||||
import com.accompany.core.model.AccountLoginRecordExample;
|
||||
import com.accompany.core.model.AccountLoginRecord;
|
||||
import com.accompany.core.model.AccountLoginRecordExample;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@@ -34,4 +32,7 @@ public interface AccountLoginRecordMapper {
|
||||
String getLastDeviceId(Long uid);
|
||||
|
||||
AccountLoginRecord getLatestLoginRecordFromDB(long uid);
|
||||
|
||||
List<AccountLoginRecord> getLastLoginIpByUids(@Param("uids") List<Long> uids);
|
||||
|
||||
}
|
@@ -18,7 +18,7 @@ import java.util.Date;
|
||||
public class LoginRecordService {
|
||||
|
||||
@Autowired
|
||||
AccountLoginRecordMapper accountLoginRecordMapper;
|
||||
private AccountLoginRecordMapper accountLoginRecordMapper;
|
||||
|
||||
public int addAccountLoginRecord(AccountLoginRecord accountLoginRecord) {
|
||||
return accountLoginRecordMapper.insert(accountLoginRecord);
|
||||
|
@@ -441,11 +441,19 @@
|
||||
where record_id = #{recordId,jdbcType=BIGINT}
|
||||
</update>
|
||||
|
||||
<select id="getLastDeviceId" parameterType="java.lang.Long" resultType="java.lang.String">
|
||||
select device_id from account_login_record where uid = #{uid} and device_id is not null order by create_time desc limit 0,1;
|
||||
<select id="getLastDeviceId" parameterType="java.lang.Long" resultType="java.lang.String">
|
||||
select device_id from account_login_record where uid = #{uid} and device_id is not null order by create_time desc limit 0,1;
|
||||
</select>
|
||||
|
||||
<select id="getLatestLoginRecordFromDB" resultMap="BaseResultMap">
|
||||
SELECT * from account_login_record where uid = #{uid} ORDER BY create_time DESC limit 1;
|
||||
</select>
|
||||
|
||||
<select id="getLastLoginIpByUids" resultMap="BaseResultMap">
|
||||
select alr.uid, login_ip from account_login_record alr
|
||||
inner join (select `uid`, max(create_time) create_time
|
||||
from account_login_record alr
|
||||
where uid in <foreach collection="uids" item="uid" separator="," open="(" close=")">#{uid}</foreach> group by uid) alr2
|
||||
on alr.uid = alr2.uid and alr.create_time = alr2.create_time
|
||||
</select>
|
||||
</mapper>
|
@@ -3,11 +3,13 @@ package com.accompany.business.service.region;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.common.utils.RandomUtil;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.service.SysConfService;
|
||||
import com.accompany.core.service.user.UsersBaseService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.github.houbb.opencc4j.util.ZhConverterUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -56,11 +58,15 @@ public class RegionService {
|
||||
|
||||
public String getCountry(String registerIp) {
|
||||
String dbRegion = regionSearchService.getCountry(registerIp);
|
||||
log.info("ip2region ip {} region {}", registerIp, dbRegion);
|
||||
String zhRegion = ZhConverterUtil.toTraditional(dbRegion);
|
||||
log.info("ip2region ip {} region {} zhRegion {}", registerIp, dbRegion, zhRegion);
|
||||
List<String> configs = getConfig();
|
||||
if (configs.contains(dbRegion)){
|
||||
return dbRegion;
|
||||
} else if (configs.contains("中國")) {
|
||||
return "香港";
|
||||
}
|
||||
return configs.get(0);
|
||||
int index = RandomUtil.randomByRange(0, configs.size()-1);
|
||||
return configs.get(index);
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,6 @@ import com.accompany.core.service.account.UserAppService;
|
||||
import com.accompany.core.service.common.JedisService;
|
||||
import com.accompany.core.service.user.PhoneBlackService;
|
||||
import com.accompany.core.service.user.UsersBaseService;
|
||||
import com.accompany.oauth2.config.OAuthConfig;
|
||||
import com.accompany.oauth2.constant.LoginTypeEnum;
|
||||
import com.accompany.oauth2.constant.OAuthStatus;
|
||||
import com.accompany.oauth2.exception.CustomOAuth2Exception;
|
||||
@@ -25,7 +24,6 @@ import com.accompany.oauth2.model.AccountDetails;
|
||||
import com.accompany.oauth2.service.account.AccountBlockCheckService;
|
||||
import com.accompany.oauth2.service.account.AccountManageService;
|
||||
import com.accompany.sms.service.SmsService;
|
||||
import com.google.gson.Gson;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
@@ -39,7 +37,6 @@ import org.springframework.util.StringUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Slf4j
|
||||
public class MyUserDetailsServiceImpl implements MyUserDetailsService {
|
||||
|
7
pom.xml
7
pom.xml
@@ -99,6 +99,7 @@
|
||||
<esayexcel.version>3.1.5</esayexcel.version>
|
||||
<googlecode-libphonenumber.version>8.12.43</googlecode-libphonenumber.version>
|
||||
<ip2region.version>2.7.0</ip2region.version>
|
||||
<opencc4j.version>1.7.2</opencc4j.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
@@ -969,6 +970,12 @@
|
||||
<version>${ip2region.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.houbb</groupId>
|
||||
<artifactId>opencc4j</artifactId>
|
||||
<version>${opencc4j.version}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
Reference in New Issue
Block a user