33333333333

This commit is contained in:
777
2025-02-12 23:33:59 +08:00
parent 898c4b2431
commit 7a02a66492
6 changed files with 429 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.BatchAddUser;
/**
* 批量新增用户脚本Service接口
*
* @author 777
* @date 2025-02-12
*/
public interface BatchAddUserService extends IService<BatchAddUser> {
void run(String id);
void addUser(String id);
}

View File

@@ -0,0 +1,125 @@
package com.ruoyi.cai.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.auth.CaiLoginManager;
import com.ruoyi.cai.auth.CaiRegisterUser;
import com.ruoyi.cai.domain.BatchAddUser;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.mapper.BatchAddUserMapper;
import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.BatchAddUserService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* 批量新增用户脚本Service业务层处理
*
* @author 777
* @date 2025-02-12
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class BatchAddUserServiceImpl extends ServiceImpl<BatchAddUserMapper,BatchAddUser> implements BatchAddUserService {
@Autowired
private CaiLoginManager caiLoginManager;
@Autowired
private SystemConfigManager systemConfigManager;
@Autowired
private UserService userService;
@Autowired
private AnchorService anchorService;
@Autowired
private BatchAddUserService batchAddUserService;
@Override
public void run(String id) {
boolean update = this.update(Wrappers.lambdaUpdate(BatchAddUser.class).eq(BatchAddUser::getId, id)
.eq(BatchAddUser::getRunStatus, 0).set(BatchAddUser::getRunStatus, 1));
if(!update){
throw new BaseException("无法重复执行");
}
new Thread(() -> {
try {
batchAddUserService.addUser(id);
}catch (Exception e){
log.error("新增用户失败 id={}", id,e);
this.update(Wrappers.lambdaUpdate(BatchAddUser.class).eq(BatchAddUser::getId, id)
.set(BatchAddUser::getRunTime, LocalDateTime.now())
.set(BatchAddUser::getRunStatus, 2)
.set(BatchAddUser::getRunFail, e.getMessage()));
}
}).start();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void addUser(String id){
BatchAddUser batchAddUser = this.getById(id);
Integer phoneSuffixStart = batchAddUser.getPhoneSuffixStart();
List<RunResult> runResults = new ArrayList<>();
for (int i = 0; i < batchAddUser.getAddNum(); i++) {
String phone = String.format("%s%04d", batchAddUser.getPhonePrefix(), phoneSuffixStart+i);
if(phone.length() != 11){
log.error("新增用户:手机号非法 mobile={}",phone);
continue;
}
String password = String.format("%s%s", batchAddUser.getPasswordPrefix(), batchAddUser.getPasswordSuffixStart()+i);
String code = systemConfigManager.getSystemConfig(SystemConfigEnum.SMS_CODE_ADMIN);
CaiRegisterUser registerUser = new CaiRegisterUser();
registerUser.setUsername(phone);
registerUser.setPassword(password);
registerUser.setPasswordCheck(password);
registerUser.setCode(code);
registerUser.setInviteId(batchAddUser.getInviteUserCode());
registerUser.setSystemOp(true);
caiLoginManager.register(registerUser);
User user = userService.getByUsername(phone);
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId())
.set(User::getBirthday, LocalDate.now().plusYears(-18))
.set(User::getAge, 18)
.set(User::getGender, GenderEnum.WOMEN.getCode())
.set(User::getCityId, "140882")
.set(User::getCity, "河津"));
anchorService.joinAnchor(user.getId(),true);
runResults.add(new RunResult(phone,password));
}
this.update(Wrappers.lambdaUpdate(BatchAddUser.class).eq(BatchAddUser::getId,id)
.set(BatchAddUser::getRunStatus, 3)
.set(BatchAddUser::getRunResult, JSON.toJSONString(runResults))
.set(BatchAddUser::getRunTime, LocalDateTime.now()));
}
@Data
public static class RunResult {
private String phone;
private String password;
public RunResult() {
}
public RunResult(String phone, String password) {
this.phone = phone;
this.password = password;
}
}
}