feat: 一些调整
This commit is contained in:
parent
e3fa535b95
commit
0fbc9000f7
|
|
@ -6,6 +6,7 @@ import com.nflg.mobilebroken.admin.annotation.ApiMark;
|
|||
import com.nflg.mobilebroken.admin.service.WXQRCodeService;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.STATE;
|
||||
import com.nflg.mobilebroken.common.constant.UserState;
|
||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
|
|
@ -37,8 +38,10 @@ import javax.validation.Valid;
|
|||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 账号相关接口
|
||||
|
|
@ -112,7 +115,7 @@ public class AdminUserController extends ControllerBase {
|
|||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_ACCOUNT_ACTIVATION, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_ACCOUNT_ACTIVATION_NOTIFY, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${loginName}",adminUser.getLoginName())
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString(email.getBytes()))
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((email+"|0").getBytes()))
|
||||
.replace("${password}",request.getPassword())
|
||||
.replace("${website}",websiteUrl);
|
||||
emailService.sendEmail(email, subject, content);
|
||||
|
|
@ -126,11 +129,42 @@ public class AdminUserController extends ControllerBase {
|
|||
* 更新账号
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@Transactional
|
||||
@PostMapping("updateAccount")
|
||||
@MethodInfoMark(value = "更新账号", menuName = "账号管理")
|
||||
@ApiMark(moduleName = "账号管理", apiName = "更新账号")
|
||||
public ApiResult<Void> updateAccount(@Valid @RequestBody AccountUpdateRequest request) {
|
||||
adminUserService.update(request);
|
||||
public ApiResult<Void> updateAccount(@Valid @RequestBody AccountUpdateRequest request) throws MessagingException {
|
||||
AdminUser user=adminUserService.getById(request.getId());
|
||||
if (!StrUtil.equals(user.getLoginName(),request.getLoginName())){
|
||||
VUtils.trueThrowBusinessError(adminUserService.lambdaQuery()
|
||||
.eq(AdminUser::getLoginName, request.getLoginName())
|
||||
.ne(AdminUser::getId, request.getId())
|
||||
.exists())
|
||||
.throwMessage("已存在相同的登录名");
|
||||
user.setState(UserState.ToBeActivated.getState());
|
||||
String code= RandomUtil.randomString(6);
|
||||
redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getLoginName(), code, Duration.ofHours(72));
|
||||
redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72));
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${email}", user.getLoginName())
|
||||
.replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes()))
|
||||
.replace("${password}", code);
|
||||
emailService.sendEmail(request.getLoginName(), subject, content);
|
||||
} else {
|
||||
if (Objects.nonNull(request.getEnable())) {
|
||||
user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState());
|
||||
}
|
||||
}
|
||||
user.setUserCode(request.getUserCode())
|
||||
.setUserName(request.getUserName())
|
||||
.setAvatar(request.getAvatar())
|
||||
.setDepartmentId(request.getDepartmentId())
|
||||
.setPhone(request.getPhone())
|
||||
.setTitleId(request.getTitleId())
|
||||
.setUpdateBy(AdminUserUtil.getUserId())
|
||||
.setUpdateTime(LocalDateTime.now());
|
||||
adminUserService.updateById(user);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
@ -184,7 +218,7 @@ public class AdminUserController extends ControllerBase {
|
|||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_ACCOUNT_RESET_PASSWORD, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_RESET_PASSWORD_NOTIFY, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${loginName}",adminUser.getLoginName())
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString(adminUser.getEmail().getBytes()))
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((adminUser.getEmail()+"|0").getBytes()))
|
||||
.replace("${password}",password);
|
||||
emailService.sendEmail(adminUser.getEmail(), subject, content);
|
||||
}
|
||||
|
|
@ -208,7 +242,7 @@ public class AdminUserController extends ControllerBase {
|
|||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_ACCOUNT_RESET_PASSWORD, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_RESET_PASSWORD_NOTIFY, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${loginName}",adminUser.getLoginName())
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString(email.getBytes()))
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((email+"|0").getBytes()))
|
||||
.replace("${password}",password);
|
||||
emailService.sendEmail(email, subject, content);
|
||||
} catch (Exception ex) {
|
||||
|
|
@ -302,4 +336,15 @@ public class AdminUserController extends ControllerBase {
|
|||
AdminUserVO adminUserVO = adminUserService.getInfo(AdminUserUtil.getUserId());
|
||||
return ApiResult.success(adminUserVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除账号
|
||||
* @param request 请求参数
|
||||
**/
|
||||
@PostMapping("deleteAccount")
|
||||
@ApiMark(moduleName = "账号管理", apiName = "删除账号")
|
||||
public ApiResult<Void> deleteAccount(@Valid @RequestBody DeleteRequest request){
|
||||
adminUserService.deleteAccount(request.getId());
|
||||
return ApiResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,28 @@
|
|||
package com.nflg.mobilebroken.admin.controller;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.nflg.mobilebroken.admin.annotation.ApiMark;
|
||||
import com.nflg.mobilebroken.common.constant.AppUserApplyforType;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.STATE;
|
||||
import com.nflg.mobilebroken.common.constant.UserState;
|
||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.*;
|
||||
import com.nflg.mobilebroken.common.util.VUtils;
|
||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||
import com.nflg.mobilebroken.repository.entity.AppUserApplyfor;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
|
||||
import com.nflg.mobilebroken.repository.service.*;
|
||||
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
|
||||
import com.nflg.mobilebroken.starter.service.EmailService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
|
@ -25,8 +31,13 @@ import javax.mail.MessagingException;
|
|||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 代理商相关接口
|
||||
|
|
@ -61,24 +72,29 @@ public class AppUserController extends ControllerBase {
|
|||
@Resource
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
|
||||
@Resource
|
||||
private RedisTemplate<String, String> redisTemplate;
|
||||
|
||||
/**
|
||||
* 获取公司列表
|
||||
* @param userId 用户id
|
||||
* @return 部门列表
|
||||
*/
|
||||
@PostMapping("getSimpleCompanys")
|
||||
@GetMapping("getSimpleCompanys")
|
||||
@ApiMark(moduleName = "代理商管理", apiName = "获取公司列表")
|
||||
public ApiResult<List<CompanySimpleVO>> getSimpleCompanys() {
|
||||
return ApiResult.success(customerService.getSimpleCompanys());
|
||||
public ApiResult<List<CompanySimpleVO>> getSimpleCompanys(@Valid @RequestParam Integer userId) {
|
||||
return ApiResult.success(customerService.getSimpleCompanysFromAdmin(userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取区域列表
|
||||
* @param userId 用户id
|
||||
* @return 部门列表
|
||||
*/
|
||||
@PostMapping("getSimpleAreas")
|
||||
@GetMapping("getSimpleAreas")
|
||||
@ApiMark(moduleName = "代理商管理", apiName = "获取区域列表")
|
||||
public ApiResult<List<AreaSimpleVO>> getSimpleAreas() {
|
||||
return ApiResult.success(areaService.getSimpleAreas());
|
||||
public ApiResult<List<AreaSimpleVO>> getSimpleAreas(@Valid @RequestParam Integer userId) {
|
||||
return ApiResult.success(appUserService.getSimpleAreas(userId));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -90,15 +106,15 @@ public class AppUserController extends ControllerBase {
|
|||
@ApiMark(moduleName = "代理商管理", apiName = "添加代理商主账号")
|
||||
public ApiResult<Void> addPrimaryAppUser(@Valid @RequestBody PrimaryAppUserAddRequest request) {
|
||||
request.setPassword(RandomUtil.randomNumbers(6));
|
||||
AppUser appUser =appUserService.addPrimaryAppUser(request);
|
||||
AppUser appUser = appUserService.addPrimaryAppUser(request);
|
||||
try {
|
||||
String email = request.getEmail();
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_ACCOUNT_ACTIVATION, appUser.getLanguageCode());
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_ACCOUNT_ACTIVATION_NOTIFY, appUser.getLanguageCode())
|
||||
.replace("${loginName}",appUser.getLoginName())
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString(email.getBytes()))
|
||||
.replace("${password}",request.getPassword())
|
||||
.replace("${website}",websiteUrl);
|
||||
.replace("${loginName}", appUser.getLoginName())
|
||||
.replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((email+"|0").getBytes()))
|
||||
.replace("${password}", request.getPassword())
|
||||
.replace("${website}", websiteUrl);
|
||||
emailService.sendEmail(email, subject, content);
|
||||
} catch (MessagingException e) {
|
||||
log.error("发送邮件失败", e);
|
||||
|
|
@ -107,17 +123,102 @@ public class AppUserController extends ControllerBase {
|
|||
}
|
||||
|
||||
/**
|
||||
* 更新代理商主账号
|
||||
* 更新代理商账号
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@PostMapping("updatePrimaryAppUser")
|
||||
@MethodInfoMark(value = "更新代理商主账号", menuName = "代理商管理")
|
||||
@ApiMark(moduleName = "代理商管理", apiName = "更新代理商主账号")
|
||||
public ApiResult<Void> updatePrimaryAppUser(@Valid @RequestBody PrimaryAppUserUpdateRequest request) {
|
||||
appUserService.updatePrimaryAppUser(request);
|
||||
@PostMapping("updateAppUser")
|
||||
@MethodInfoMark(value = "更新代理商账号", menuName = "代理商管理")
|
||||
@ApiMark(moduleName = "代理商管理", apiName = "更新代理商账号")
|
||||
public ApiResult<Void> updateAppUser(@Valid @RequestBody AppUserUpdateRequest request) throws MessagingException {
|
||||
AppUser user=appUserService.getById(request.getId());
|
||||
if (user.getIsPrimary()){
|
||||
updatePrimaryAppUser(user,request);
|
||||
}else {
|
||||
updateAppUser(user,request);
|
||||
}
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
public void updateAppUser(AppUser user,AppUserUpdateRequest request) throws MessagingException {
|
||||
if (!StrUtil.equals(user.getLoginName(), request.getLoginName())){
|
||||
VUtils.trueThrowBusinessError(appUserService.lambdaQuery()
|
||||
.eq(AppUser::getLoginName, request.getLoginName())
|
||||
.ne(AppUser::getId, request.getId())
|
||||
.exists())
|
||||
.throwMessage("登录名已存在");
|
||||
user.setState(UserState.ToBeActivated.getState());
|
||||
String code= RandomUtil.randomString(6);
|
||||
redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getId(), code, Duration.ofHours(72));
|
||||
redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72));
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${email}", user.getLoginName())
|
||||
.replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes()))
|
||||
.replace("${password}", code);
|
||||
emailService.sendEmail(request.getLoginName(), subject, content);
|
||||
}else {
|
||||
if (Objects.nonNull(request.getEnable())) {
|
||||
user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState());
|
||||
}
|
||||
}
|
||||
user.setName(request.getUserName())
|
||||
.setPhone(request.getPhone())
|
||||
.setAreaId(request.getAreaId())
|
||||
.setTitleId(request.getTitleId())
|
||||
.setCompanyId(StrUtil.join(",", request.getCompanyIds()))
|
||||
.setUpdateTime(LocalDateTime.now());
|
||||
appUserService.updateById(user);
|
||||
}
|
||||
|
||||
public void updatePrimaryAppUser(AppUser user,AppUserUpdateRequest request) throws MessagingException {
|
||||
List<Integer> companyIds = appUserService.lambdaQuery()
|
||||
.select(AppUser::getCompanyId)
|
||||
.eq(AppUser::getIsPrimary, true)
|
||||
.ne(AppUser::getId, request.getId())
|
||||
.list()
|
||||
.stream()
|
||||
.map(AppUser::getCompanyId)
|
||||
.flatMap(s -> Arrays.stream(s.split(",")))
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toList());
|
||||
List<Integer> cIds = request.getCompanyIds().stream()
|
||||
.filter(companyIds::contains)
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(cIds)) {
|
||||
VUtils.trueThrowBusinessError(true)
|
||||
.throwMessage("以下公司已设置主账号:" + StrUtil.join(",", customerService.listByIds(cIds).stream()
|
||||
.map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList())));
|
||||
}
|
||||
if (!StrUtil.equals(user.getLoginName(), request.getLoginName())){
|
||||
VUtils.trueThrowBusinessError(appUserService.lambdaQuery()
|
||||
.eq(AppUser::getLoginName, request.getLoginName())
|
||||
.ne(AppUser::getId, request.getId())
|
||||
.exists())
|
||||
.throwMessage("登录名已存在");
|
||||
user.setState(UserState.ToBeActivated.getState());
|
||||
String code= RandomUtil.randomString(6);
|
||||
redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getLoginName(), code, Duration.ofHours(72));
|
||||
redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72));
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${email}", user.getLoginName())
|
||||
.replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes()))
|
||||
.replace("${password}", code);
|
||||
emailService.sendEmail(request.getLoginName(), subject, content);
|
||||
}else {
|
||||
if (Objects.nonNull(request.getEnable())) {
|
||||
user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState());
|
||||
}
|
||||
}
|
||||
user.setName(request.getUserName())
|
||||
.setPhone(request.getPhone())
|
||||
.setAreaId(request.getAreaId())
|
||||
.setTitleId(request.getTitleId())
|
||||
.setCompanyId(StrUtil.join(",", request.getCompanyIds()))
|
||||
.setUpdateTime(LocalDateTime.now());
|
||||
appUserService.updateById(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取代理商子账号审核详情
|
||||
* @param id 审批id
|
||||
|
|
@ -144,7 +245,7 @@ public class AppUserController extends ControllerBase {
|
|||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_ACCOUNT_ACTIVATION, applyfor.getLanguageCode());
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_ACCOUNT_ACTIVATION_NOTIFY, applyfor.getLanguageCode())
|
||||
.replace("${loginName}",applyfor.getUserEmail())
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString(applyfor.getUserEmail().getBytes()))
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((applyfor.getUserEmail()+"|0").getBytes()))
|
||||
.replace("${password}",request.getPassword())
|
||||
.replace("${website}",websiteUrl);
|
||||
emailService.sendEmail(applyfor.getUserEmail(), subject, content);
|
||||
|
|
@ -168,13 +269,13 @@ public class AppUserController extends ControllerBase {
|
|||
}
|
||||
|
||||
/**
|
||||
* 搜索代理商子账号列表(根据公司名称或主账号)
|
||||
* @param request 请求参数
|
||||
* 获取代理商子账号列表
|
||||
* @param id 主账号id
|
||||
*/
|
||||
@PostMapping("searchSimpleUsers")
|
||||
@ApiMark(moduleName = "代理商管理", apiName = "搜索代理商子账号列表(根据公司名称或主账号)")
|
||||
public ApiResult<List<CompanyVO>> searchSimpleUsers(@Valid @RequestBody SimpleUsersSearchRequest request) {
|
||||
return ApiResult.success(appUserService.searchSimpleUsers(request));
|
||||
@GetMapping("getSimpleUsers")
|
||||
@ApiMark(moduleName = "代理商管理", apiName = "获取代理商子账号列表")
|
||||
public ApiResult<List<CompanyVO>> getSimpleUsers(@Valid @RequestParam @NotNull Integer id) {
|
||||
return ApiResult.success(appUserService.getSimpleUsers(id));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -237,7 +338,7 @@ public class AppUserController extends ControllerBase {
|
|||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_ACCOUNT_RESET_PASSWORD, appUser.getLanguageCode());
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_RESET_PASSWORD_NOTIFY, appUser.getLanguageCode())
|
||||
.replace("${loginName}",appUser.getLoginName())
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString(appUser.getEmail().getBytes()))
|
||||
.replace("${url}",activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((appUser.getEmail()+"|0").getBytes()))
|
||||
.replace("${password}",password);
|
||||
emailService.sendEmail(appUser.getEmail(), subject, content);
|
||||
}
|
||||
|
|
@ -246,4 +347,23 @@ public class AppUserController extends ControllerBase {
|
|||
}
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否存在子账号
|
||||
* @param id 主账号id
|
||||
*/
|
||||
@GetMapping("hasChildren")
|
||||
public ApiResult<Boolean> hasChildren(@Valid @RequestParam Integer id) {
|
||||
return ApiResult.success(appUserService.hasChildren(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除代理商
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@PostMapping("deleteAppUser")
|
||||
public ApiResult<Void> deleteAppUser(@Valid @RequestBody DeleteRequest request){
|
||||
appUserService.deleteAppUser(request.getId());
|
||||
return ApiResult.success();
|
||||
}
|
||||
}
|
||||
|
|
@ -174,6 +174,17 @@ public class TicketController extends ControllerBase {
|
|||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取工单处理人
|
||||
* @param id 工单id
|
||||
* @return 工单处理人列表
|
||||
*/
|
||||
@GetMapping("getTicketHandle")
|
||||
@ApiMark(moduleName = "工单管理", apiName = "获取工单处理人")
|
||||
public ApiResult<List<AdminUserSimpleVO>> getTicketHandle(@Valid @RequestParam @NotNull(message = "工单编号不能为空") Integer id){
|
||||
return ApiResult.success(ticketService.getTicketHandle(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加工单处理人
|
||||
* @param request 请求参数
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
package com.nflg.mobilebroken.admin.event;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.MessageSubType;
|
||||
import com.nflg.mobilebroken.common.constant.MessageType;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminMessage;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
import com.nflg.mobilebroken.repository.entity.AppMessage;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
import com.nflg.mobilebroken.repository.entity.*;
|
||||
import com.nflg.mobilebroken.repository.service.*;
|
||||
import com.nflg.mobilebroken.starter.service.EmailService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -14,8 +14,12 @@ import org.springframework.context.ApplicationContext;
|
|||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
public class TicketCompleteEvent extends ApplicationEvent implements ApplicationContextAware {
|
||||
|
|
@ -48,6 +52,7 @@ public class TicketCompleteEvent extends ApplicationEvent implements Application
|
|||
|
||||
public void send(){
|
||||
sendUserMessage();
|
||||
sendEmail();
|
||||
}
|
||||
|
||||
private void sendUserMessage(){
|
||||
|
|
@ -72,4 +77,41 @@ public class TicketCompleteEvent extends ApplicationEvent implements Application
|
|||
.setIsRead(false)
|
||||
.setCreateTime(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
private void sendEmail(){
|
||||
try {
|
||||
List<Integer> cqmUserIds=deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo());
|
||||
if (CollectionUtil.isNotEmpty(cqmUserIds)) {
|
||||
List<AdminUser> cqmUsers = adminUserService.listByIds(cqmUserIds);
|
||||
if (CollectionUtil.isNotEmpty(cqmUsers)) {
|
||||
List<Integer> handleUserIds = Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList());
|
||||
List<AdminUser> handleUsers = adminUserService.listByIds(handleUserIds);
|
||||
AppUser appUser = appUserService.getById(ticket.getUserId());
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_ASSIGNED, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_NOTIFY, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${no}", ticket.getNo())
|
||||
.replace("${title}", ticket.getTitle())
|
||||
.replace("${createUser}", appUser.getName())
|
||||
.replace("${handleUser}", StrUtil.join(",", handleUsers.stream().map(AdminUser::getUserName).collect(Collectors.toList())))
|
||||
.replace("${createTime}", ticket.getCreateTime().format(FORMATTER))
|
||||
.replace("${msg}", subject);
|
||||
sendEmail(cqmUsers, subject, content);
|
||||
}
|
||||
}
|
||||
}catch(Exception ex){
|
||||
log.error("邮件发送失败", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void sendEmail(List<AdminUser> adminUsers,String subject,String content){
|
||||
if (CollectionUtil.isNotEmpty(adminUsers)){
|
||||
for (AdminUser adminUser:adminUsers) {
|
||||
try {
|
||||
emailService.sendEmail(adminUser.getEmail(),subject,content);
|
||||
} catch (MessagingException e) {
|
||||
log.error("邮件发送失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
package com.nflg.mobilebroken.admin.task;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.nflg.mobilebroken.common.constant.UserState;
|
||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||
import com.nflg.mobilebroken.repository.service.IAppUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class AppUserScheduledTasks {
|
||||
|
||||
@Resource
|
||||
private IAppUserService appUserService;
|
||||
|
||||
/**
|
||||
* 禁用已过期代理商
|
||||
* 每天午夜12点执行一次
|
||||
*/
|
||||
@Transactional
|
||||
@Scheduled(cron = "0 0 0 * * ?")
|
||||
public void disableExpiredAppUser() {
|
||||
List<AppUser> primaryAppUsers=appUserService.lambdaQuery()
|
||||
.eq(AppUser::getIsPrimary, true)
|
||||
.lt(AppUser::getExpireTime, LocalDateTime.now().toLocalDate())
|
||||
.list();
|
||||
if (CollectionUtil.isNotEmpty(primaryAppUsers)){
|
||||
appUserService.lambdaUpdate()
|
||||
.set(AppUser::getState, UserState.Disabled.getState())
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.ne(AppUser::getState, UserState.Disabled.getState())
|
||||
.in(AppUser::getId, primaryAppUsers.stream().map(AppUser::getId).collect(Collectors.toList()))
|
||||
.update();
|
||||
for (AppUser primaryUser : primaryAppUsers) {
|
||||
List<AppUser> children=appUserService.getChildren(primaryUser);
|
||||
if (CollectionUtil.isNotEmpty(children)){
|
||||
appUserService.lambdaUpdate()
|
||||
.set(AppUser::getState, UserState.Disabled.getState())
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.ne(AppUser::getState, UserState.Disabled.getState())
|
||||
.in(AppUser::getId, children.stream().map(AppUser::getId).collect(Collectors.toList()))
|
||||
.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -22,6 +22,8 @@ public class Constant {
|
|||
|
||||
public static final String REDIS_KEY_MESSAGECONFIG_APP = "appNotifyEnabled";
|
||||
|
||||
public static final String REDIS_KEY_CHANGE_EMAIL_CODE = "changeEmail:";
|
||||
|
||||
public static final String WX_TOKEN_URL = "http://sfc.nflg.net:8071/api/crm_api!getYdpAccessToken.action";
|
||||
|
||||
public static final String WX_QRCODE = "https://api.weixin.qq.com/cgi-bin/qrcode/create";
|
||||
|
|
@ -32,6 +34,8 @@ public class Constant {
|
|||
|
||||
public static final String DICTIONARY_ITEM_EMAIL_TITLE_TICKET_ASSIGNED="TitleTicketAssigned";
|
||||
|
||||
public static final String DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL="TitleChangeEmail";
|
||||
|
||||
public static final String DICTIONARY_ITEM_EMAIL_TITLE_TICKET_REPLY="TitleTicketReply";
|
||||
|
||||
public static final String DICTIONARY_ITEM_EMAIL_TITLE_TICKET_TIMEOUT="TitleTicketTimeout";
|
||||
|
|
@ -40,6 +44,8 @@ public class Constant {
|
|||
|
||||
public static final String DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_NOTIFY="TicketNotify";
|
||||
|
||||
public static final String DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL="ChangeEmail";
|
||||
|
||||
public static final String DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_INVITE_COMMENT="InviteComment";
|
||||
|
||||
public static final String DICTIONARY_ITEM_EMAIL_TITLE_ACCOUNT_RESET_PASSWORD="TitleResetPassword";
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import lombok.EqualsAndHashCode;
|
|||
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Data
|
||||
public class PrimaryAppUserUpdateRequest extends PrimaryAppUserAddRequest {
|
||||
public class AppUserUpdateRequest extends PrimaryAppUserAddRequest {
|
||||
|
||||
private Integer id;
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.nflg.mobilebroken.common.pojo.request;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DeleteRequest {
|
||||
|
||||
private Integer id;
|
||||
}
|
||||
|
|
@ -50,4 +50,7 @@ public class PrimaryAppUserAddRequest {
|
|||
|
||||
@JsonIgnore
|
||||
private String password;
|
||||
|
||||
//职位id
|
||||
private Integer titleId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
package com.nflg.mobilebroken.common.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AdminUserSimpleVO {
|
||||
|
||||
// 用户ID
|
||||
private Integer userId;
|
||||
|
||||
// 用户名
|
||||
private String userName;
|
||||
|
||||
// 部门名称
|
||||
private String departmentName;
|
||||
|
||||
// 用户编号
|
||||
private String userCode;
|
||||
}
|
||||
|
|
@ -55,6 +55,10 @@
|
|||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-crypto</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-redis</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
|||
|
|
@ -103,4 +103,9 @@ public class AdminUser implements Serializable {
|
|||
* 最后更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除状态,0:未删除,1:已删除
|
||||
*/
|
||||
private Boolean isDel;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -129,4 +129,9 @@ public class AppUser implements Serializable {
|
|||
* 过期时间
|
||||
*/
|
||||
private LocalDate expireTime;
|
||||
|
||||
/**
|
||||
* 删除状态,0:未删除,1:已删除
|
||||
*/
|
||||
private Boolean isDel;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.nflg.mobilebroken.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminUserSimpleVO;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -16,4 +17,6 @@ import java.util.List;
|
|||
public interface AdminUserMapper extends BaseMapper<AdminUser> {
|
||||
|
||||
List<AdminUser> getByRoleCode(String roleCode);
|
||||
|
||||
List<AdminUserSimpleVO> getSimples(List<Integer> userIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.nflg.mobilebroken.repository.service;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminUserSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminUserVO;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||
|
||||
|
|
@ -22,8 +23,6 @@ public interface IAdminUserService extends IService<AdminUser> {
|
|||
|
||||
AdminUser add(AccountAddRequest request);
|
||||
|
||||
void update(AccountUpdateRequest request);
|
||||
|
||||
void enable(EnableAccountRequest request);
|
||||
|
||||
PageData<AdminUserVO> search(SearchAccountRequest request);
|
||||
|
|
@ -47,4 +46,8 @@ public interface IAdminUserService extends IService<AdminUser> {
|
|||
List<AdminUser> getForAccountReview();
|
||||
|
||||
AdminUserVO getInfo(Integer userId);
|
||||
|
||||
List<AdminUserSimpleVO> getSimples(List<Integer> userIds);
|
||||
|
||||
void deleteAccount(Integer id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import com.nflg.mobilebroken.common.pojo.PageData;
|
|||
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AppUserForAdminVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AppUserVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.CompanyVO;
|
||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||
|
||||
|
|
@ -35,8 +36,6 @@ public interface IAppUserService extends IService<AppUser> {
|
|||
|
||||
AppUser addPrimaryAppUser(PrimaryAppUserAddRequest request);
|
||||
|
||||
void updatePrimaryAppUser(PrimaryAppUserUpdateRequest request);
|
||||
|
||||
void migrate(MigrateAppUserRequest request);
|
||||
|
||||
PageData<AppUserForAdminVO> searchAppUserForAdmin(SearchAppUserForAdminRequest request);
|
||||
|
|
@ -54,4 +53,14 @@ public interface IAppUserService extends IService<AppUser> {
|
|||
AppUser forgetPassword(String email, String password);
|
||||
|
||||
AppUser getPrimaryByCompanyId(String companyId);
|
||||
|
||||
List<AppUser> getChildren(AppUser primaryUser);
|
||||
|
||||
Boolean hasChildren(Integer id);
|
||||
|
||||
List<CompanyVO> getSimpleUsers(Integer id);
|
||||
|
||||
void deleteAppUser(Integer id);
|
||||
|
||||
List<AreaSimpleVO> getSimpleAreas(Integer userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.nflg.mobilebroken.repository.service;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.TBaseAreaVO;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseArea;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
|
@ -28,6 +27,4 @@ public interface ITBaseAreaService extends IService<TBaseArea> {
|
|||
|
||||
|
||||
Integer getCount();
|
||||
|
||||
List<AreaSimpleVO> getSimpleAreas();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,4 +27,6 @@ public interface ITBaseCustomerService extends IService<TBaseCustomer> {
|
|||
List<CompanySimpleVO> getSimpleCompanys(Integer userId);
|
||||
|
||||
List<CompanySimpleVO> getSimpleCompanys();
|
||||
|
||||
List<CompanySimpleVO> getSimpleCompanysFromAdmin(Integer userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
import com.nflg.mobilebroken.common.pojo.dto.UserDTO;
|
||||
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminUserSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.TicketVO;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
|
||||
|
|
@ -47,4 +48,6 @@ public interface ITicketService extends IService<Ticket> {
|
|||
Ticket addTicketHandle(TicketHandleAddRequest request);
|
||||
|
||||
List<Ticket> getNonComment(int days);
|
||||
|
||||
List<AdminUserSimpleVO> getTicketHandle(Integer id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import com.nflg.mobilebroken.common.constant.UserState;
|
|||
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminUserSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminUserVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.RoleSimpleVO;
|
||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||
|
|
@ -19,6 +20,7 @@ import com.nflg.mobilebroken.common.util.VUtils;
|
|||
import com.nflg.mobilebroken.repository.entity.*;
|
||||
import com.nflg.mobilebroken.repository.mapper.AdminUserMapper;
|
||||
import com.nflg.mobilebroken.repository.service.*;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -55,6 +57,9 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
@Resource
|
||||
private IAdminUserRoleMapService adminUserRoleMapService;
|
||||
|
||||
@Resource
|
||||
private RedisTemplate<String, String> redisTemplate;
|
||||
|
||||
@Override
|
||||
public AdminUser getUser(String userName, String password) {
|
||||
AdminUser user = lambdaQuery()
|
||||
|
|
@ -86,26 +91,6 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
return user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AccountUpdateRequest request) {
|
||||
AdminUser user = new AdminUser()
|
||||
.setId(request.getId())
|
||||
.setUserCode(request.getUserCode())
|
||||
.setUserName(request.getUserName())
|
||||
.setAvatar(request.getAvatar())
|
||||
.setDepartmentId(request.getDepartmentId())
|
||||
.setEmail(request.getEmail())
|
||||
.setLoginName(request.getLoginName())
|
||||
.setPhone(request.getPhone())
|
||||
.setTitleId(request.getTitleId())
|
||||
.setUpdateBy(AdminUserUtil.getUserId())
|
||||
.setUpdateTime(LocalDateTime.now());
|
||||
if (Objects.nonNull(request.getEnable())){
|
||||
user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState());
|
||||
}
|
||||
updateById(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable(EnableAccountRequest request) {
|
||||
lambdaUpdate()
|
||||
|
|
@ -117,6 +102,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
@Override
|
||||
public PageData<AdminUserVO> search(SearchAccountRequest request) {
|
||||
IPage<AdminUser> page = lambdaQuery()
|
||||
.eq(AdminUser::getIsDel,false)
|
||||
.eq(Objects.nonNull(request.getState()), AdminUser::getState, request.getState())
|
||||
.eq(Objects.nonNull(request.getDepartmentId()), AdminUser::getDepartmentId, request.getDepartmentId())
|
||||
.like(StrUtil.isNotBlank(request.getLoginName()), AdminUser::getLoginName, request.getLoginName())
|
||||
|
|
@ -161,6 +147,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
return Collections.emptyList();
|
||||
}
|
||||
return lambdaQuery()
|
||||
.eq(AdminUser::getIsDel,false)
|
||||
.eq(AdminUser::getTitleId, position.getId())
|
||||
.list();
|
||||
}
|
||||
|
|
@ -206,32 +193,52 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
|
||||
@Override
|
||||
public void activateUser(UserActivateRequest request) {
|
||||
String email="";
|
||||
String code="";
|
||||
try {
|
||||
email=StrUtil.str(Base64.getUrlDecoder().decode(request.getCode()), Charset.defaultCharset());
|
||||
code=StrUtil.str(Base64.getUrlDecoder().decode(request.getCode()), Charset.defaultCharset());
|
||||
}catch (IllegalArgumentException ex){
|
||||
log.error("无效的code:"+request.getCode());
|
||||
throw new NflgException(STATE.ParamErr,"无效的code:"+request.getCode());
|
||||
}
|
||||
AdminUser adminUser = lambdaQuery()
|
||||
.eq(AdminUser::getLoginName, email)
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(adminUser)).throwMessage("用户不存");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(adminUser.getState(), UserState.ToBeActivated.getState()))
|
||||
.throwMessage("当前状态不允许激活");
|
||||
VUtils.trueThrowBusinessError(PASSWORDENCODER.matches(request.getCode(), adminUser.getPassword()))
|
||||
.throwMessage("随机码不正确");
|
||||
adminUser.setState(UserState.Activated.getState());
|
||||
adminUser.setPassword(PASSWORDENCODER.encode(request.getPassword()));
|
||||
adminUser.setUpdateTime(LocalDateTime.now());
|
||||
updateById(adminUser);
|
||||
String email=code.split("\\|")[0];
|
||||
String type=code.split("\\|")[1];
|
||||
if (StrUtil.equals("0", type)) {
|
||||
AdminUser adminUser = lambdaQuery()
|
||||
.eq(AdminUser::getLoginName, email)
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(adminUser)).throwMessage("用户不存");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(adminUser.getState(), UserState.ToBeActivated.getState()))
|
||||
.throwMessage("当前状态不允许激活");
|
||||
VUtils.trueThrowBusinessError(PASSWORDENCODER.matches(request.getCode(), adminUser.getPassword()))
|
||||
.throwMessage("随机码不正确");
|
||||
adminUser.setState(UserState.Activated.getState());
|
||||
adminUser.setPassword(PASSWORDENCODER.encode(request.getPassword()));
|
||||
adminUser.setUpdateTime(LocalDateTime.now());
|
||||
updateById(adminUser);
|
||||
}else if (StrUtil.equals("1", type)){
|
||||
//修改邮箱
|
||||
code=redisTemplate.opsForValue().get(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + email);
|
||||
VUtils.trueThrowBusinessError(!StrUtil.equals(code, request.getRandomCode()))
|
||||
.throwMessage("无效的激活码");
|
||||
String email1=redisTemplate.opsForValue().get(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code);
|
||||
VUtils.trueThrowBusinessError(StrUtil.isBlank(email1))
|
||||
.throwMessage("无效的激活码");
|
||||
lambdaUpdate()
|
||||
.set(AdminUser::getEmail, email1)
|
||||
.set(AdminUser::getState, UserState.Activated.getState())
|
||||
.set(AdminUser::getUpdateTime,LocalDateTime.now())
|
||||
.eq(AdminUser::getLoginName, email)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdminUser forgetPassword(String email, String password) {
|
||||
String encodePassword = PASSWORDENCODER.encode(password);
|
||||
AdminUser user = lambdaQuery().eq(AdminUser::getLoginName, email).one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(user)).throwMessage("用户不存在");
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(user))
|
||||
.throwMessage("用户不存在");
|
||||
VUtils.trueThrowBusinessError(user.getIsDel()).throwMessage("已删除的账号不能重设密码");
|
||||
VUtils.trueThrowBusinessError(Objects.equals(user.getState(), UserState.Disabled.getState()))
|
||||
.throwMessage("禁用状态不能重设密码");
|
||||
user.setState(UserState.ToBeActivated.getState());
|
||||
|
|
@ -255,6 +262,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
return Collections.emptyList();
|
||||
}
|
||||
return lambdaQuery()
|
||||
.eq(AdminUser::getIsDel,false)
|
||||
.eq(AdminUser::getState, UserState.Activated.getState())
|
||||
.in(AdminUser::getTitleId, titleIds)
|
||||
.list();
|
||||
|
|
@ -279,6 +287,19 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
.setDepartmentName(getDepartmentName(user.getDepartmentId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AdminUserSimpleVO> getSimples(List<Integer> userIds) {
|
||||
return baseMapper.getSimples(userIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAccount(Integer id) {
|
||||
lambdaUpdate()
|
||||
.set(AdminUser::getIsDel, true)
|
||||
.eq(AdminUser::getId, id)
|
||||
.update();
|
||||
}
|
||||
|
||||
private String getDepartmentName(Long departmentId) {
|
||||
TBaseDepartment department = departmentService.lambdaQuery()
|
||||
.eq(TBaseDepartment::getId, departmentId)
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
|
|||
.setAreaName(area.getAreaName())
|
||||
.setSalesUserName(appUser.getSalesUserName())
|
||||
.setState(1)
|
||||
.setTitle(Objects.isNull(appUser.getTitleId()) ? "" : positionService.getById(appUser.getTitleId()).getPositionName())
|
||||
.setExpireTime(appUser.getExpireTime())
|
||||
.setEmail(appUser.getEmail())
|
||||
.setName(appUser.getName())
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.mobilebroken.common.constant.AppUserApplyForState;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.STATE;
|
||||
import com.nflg.mobilebroken.common.constant.UserState;
|
||||
import com.nflg.mobilebroken.common.exception.NflgException;
|
||||
|
|
@ -14,6 +15,7 @@ import com.nflg.mobilebroken.common.pojo.PageData;
|
|||
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AppUserForAdminVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AppUserVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.CompanyVO;
|
||||
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
||||
import com.nflg.mobilebroken.common.util.PageUtil;
|
||||
|
|
@ -21,6 +23,7 @@ import com.nflg.mobilebroken.common.util.VUtils;
|
|||
import com.nflg.mobilebroken.repository.entity.*;
|
||||
import com.nflg.mobilebroken.repository.mapper.AppUserMapper;
|
||||
import com.nflg.mobilebroken.repository.service.*;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -64,9 +67,13 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
@Resource
|
||||
private ITBaseAreaService adminAreaService;
|
||||
|
||||
@Resource
|
||||
private RedisTemplate<String, String> redisTemplate;
|
||||
|
||||
@Override
|
||||
public AppUser getUser(String userName, String password) {
|
||||
AppUser user = lambdaQuery()
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.eq(AppUser::getLoginName, userName)
|
||||
.one();
|
||||
if (Objects.nonNull(user) && PASSWORDENCODER.matches(password, user.getPassword())) {
|
||||
|
|
@ -158,6 +165,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
.setEmail(request.getEmail())
|
||||
.setPhone(request.getPhone())
|
||||
.setAreaId(request.getAreaId())
|
||||
.setTitleId(request.getTitleId())
|
||||
.setPassword(encodePassword)
|
||||
.setCompanyId(StrUtil.join(",", request.getCompanyIds()))
|
||||
.setIsPrimary(true)
|
||||
|
|
@ -172,45 +180,103 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
}
|
||||
|
||||
@Override
|
||||
public void updatePrimaryAppUser(PrimaryAppUserUpdateRequest request) {
|
||||
VUtils.trueThrowBusinessError(lambdaQuery()
|
||||
.eq(AppUser::getLoginName, request.getLoginName())
|
||||
.ne(AppUser::getId, request.getId())
|
||||
.exists())
|
||||
.throwMessage("登录名已存在");
|
||||
List<Integer> companyIds = lambdaQuery()
|
||||
.select(AppUser::getCompanyId)
|
||||
.eq(AppUser::getIsPrimary, true)
|
||||
.ne(AppUser::getId, request.getId())
|
||||
.list()
|
||||
.stream()
|
||||
.map(AppUser::getCompanyId)
|
||||
.flatMap(s -> Arrays.stream(s.split(",")))
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toList());
|
||||
List<Integer> cIds = request.getCompanyIds().stream()
|
||||
.filter(companyIds::contains)
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(cIds)) {
|
||||
VUtils.trueThrowBusinessError(true)
|
||||
.throwMessage("以下公司已设置主账号:" + StrUtil.join(",", customerService.listByIds(cIds).stream()
|
||||
.map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList())));
|
||||
public List<AppUser> getChildren(AppUser primaryUser) {
|
||||
String[] companyIds = primaryUser.getCompanyId().split(",");
|
||||
LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AppUser::getIsDel, false);
|
||||
queryWrapper.eq(AppUser::getIsPrimary, false);
|
||||
queryWrapper.and(wrapper -> {
|
||||
for (String companyId : companyIds) {
|
||||
wrapper.or().eq(AppUser::getCompanyId, companyId);
|
||||
}
|
||||
});
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean hasChildren(Integer id) {
|
||||
AppUser primaryUser=getById(id);
|
||||
VUtils.trueThrowBusinessError(!primaryUser.getIsPrimary()).throwMessage("不是主账号");
|
||||
String[] companyIds = primaryUser.getCompanyId().split(",");
|
||||
LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AppUser::getIsDel, false);
|
||||
queryWrapper.eq(AppUser::getIsPrimary, false);
|
||||
queryWrapper.and(wrapper -> {
|
||||
for (String companyId : companyIds) {
|
||||
wrapper.or().eq(AppUser::getCompanyId, companyId);
|
||||
}
|
||||
});
|
||||
return baseMapper.exists(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompanyVO> getSimpleUsers(Integer id) {
|
||||
AppUser primaryUser=getById(id);
|
||||
List<Integer> companyIds = Arrays.stream(primaryUser.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList());
|
||||
List<CompanyVO> datas=new ArrayList<>();
|
||||
for (Integer companyId : companyIds){
|
||||
TBaseCustomer customer = customerService.getById(companyId);
|
||||
CompanyVO companyVO = new CompanyVO()
|
||||
.setId(customer.getId())
|
||||
.setName(customer.getAgencyCompanyName())
|
||||
.setUsers(getByCompanyId(companyId));
|
||||
datas.add(companyVO);
|
||||
}
|
||||
AppUser user = new AppUser()
|
||||
.setId(request.getId())
|
||||
.setLoginName(request.getLoginName())
|
||||
.setName(request.getUserName())
|
||||
.setEmail(request.getEmail())
|
||||
.setPhone(request.getPhone())
|
||||
.setAreaId(request.getAreaId())
|
||||
.setCompanyId(StrUtil.join(",", request.getCompanyIds()))
|
||||
.setIsPrimary(true)
|
||||
// .setUpdateBy(AdminUserUtil.getUserId())
|
||||
.setUpdateTime(LocalDateTime.now());
|
||||
if (Objects.nonNull(request.getEnable())){
|
||||
user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState());
|
||||
return datas;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void deleteAppUser(Integer id) {
|
||||
lambdaUpdate()
|
||||
.set(AppUser::getIsDel, true)
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.eq(AppUser::getId, id)
|
||||
.update();
|
||||
AppUser primaryUser=getById(id);
|
||||
List<AppUser> children=getChildren(primaryUser);
|
||||
if (CollectionUtil.isNotEmpty(children)){
|
||||
lambdaUpdate()
|
||||
.set(AppUser::getIsDel, true)
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.in(AppUser::getId, children.stream().map(AppUser::getId).collect(Collectors.toList()))
|
||||
.update();
|
||||
}
|
||||
updateById(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AreaSimpleVO> getSimpleAreas(Integer userId) {
|
||||
if (Objects.isNull(userId)){
|
||||
List<TBaseArea> datas = adminAreaService.lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren);
|
||||
return vos;
|
||||
}else {
|
||||
AppUser user=getById(userId);
|
||||
if (user.getIsPrimary()){
|
||||
List<TBaseArea> datas = adminAreaService.lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren);
|
||||
return vos;
|
||||
}else {
|
||||
List<AppArea> datas = appAreaService.lambdaQuery().eq(AppArea::getEnable, true).eq(AppArea::getParentId, 0).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren1);
|
||||
return vos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void bindChildren1(AreaSimpleVO vo) {
|
||||
List<AppArea> datas = appAreaService.lambdaQuery().eq(AppArea::getParentId, vo.getId()).eq(AppArea::getEnable, true).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren1);
|
||||
}
|
||||
|
||||
private void bindChildren(AreaSimpleVO vo) {
|
||||
List<TBaseArea> datas = adminAreaService.lambdaQuery().eq(TBaseArea::getParentAreaRowId, vo.getId()).eq(TBaseArea::getAreaState, 1).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
|
@ -224,6 +290,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
|
||||
.set(AppUser::getAreaId, null)
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.eq(AppUser::getIsPrimary, false)
|
||||
.in(AppUser::getId, request.getUserIds())
|
||||
.update();
|
||||
|
|
@ -232,6 +299,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
@Override
|
||||
public PageData<AppUserForAdminVO> searchAppUserForAdmin(SearchAppUserForAdminRequest request) {
|
||||
IPage<AppUser> page = lambdaQuery()
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.eq(AppUser::getIsPrimary, true)
|
||||
.eq(Objects.nonNull(request.getUserState()), AppUser::getState, request.getUserState())
|
||||
.like(StrUtil.isNotBlank(request.getLoginName()), AppUser::getLoginName, request.getLoginName())
|
||||
|
|
@ -290,12 +358,14 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
lambdaUpdate()
|
||||
.set(AppUser::getState, UserState.Activated.getState())
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.in(AppUser::getId, request.getIds())
|
||||
.update();
|
||||
} else {
|
||||
lambdaUpdate()
|
||||
.set(AppUser::getState, UserState.Disabled.getState())
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.in(AppUser::getId, request.getIds())
|
||||
.update();
|
||||
//禁用子账号
|
||||
|
|
@ -307,6 +377,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
lambdaUpdate()
|
||||
.set(AppUser::getState, UserState.Disabled.getState())
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.eq(AppUser::getIsPrimary, false)
|
||||
.in(AppUser::getCompanyId, companyIds)
|
||||
.update();
|
||||
|
|
@ -319,6 +390,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("主账号不存在");
|
||||
String[] companyIds = appUser.getCompanyId().split(",");
|
||||
LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AppUser::getIsDel, false);
|
||||
queryWrapper.eq(AppUser::getIsPrimary, false);
|
||||
queryWrapper.and(wrapper -> {
|
||||
for (String companyId : companyIds) {
|
||||
|
|
@ -393,29 +465,16 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
LocalDateTime now = LocalDateTime.now();
|
||||
request.getIds().forEach(id -> {
|
||||
AppUser appUser = getById(id);
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("用户不存在");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(appUser.getState(), UserState.Activated.getState())).throwMessage(id + "非启用状态");
|
||||
VUtils.trueThrowBusinessError(Objects.equals(appUser.getIsPrimary(), false)).throwMessage(id + "不是主账号");
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(appUser))
|
||||
.throwMessage("用户不存在");
|
||||
VUtils.trueThrowBusinessError(Objects.equals(appUser.getState(), UserState.ToBeActivated.getState()))
|
||||
.throwMessage(id + "未激活不能续期");
|
||||
VUtils.trueThrowBusinessError(Objects.equals(appUser.getIsPrimary(), false))
|
||||
.throwMessage(id + "不是主账号");
|
||||
appUser.setExpireTime(appUser.getExpireTime().plusMonths(request.getMonth()));
|
||||
// appUser.setUpdateBy(AdminUserUtil.getUserId());
|
||||
appUser.setUpdateTime(now);
|
||||
updateById(appUser);
|
||||
// List<String> companys = StrUtil.split(",", appUser.getCompanyId());
|
||||
// companys.forEach(c -> {
|
||||
// List<AppUser> users = lambdaQuery()
|
||||
// .eq(AppUser::getState, UserState.Activated.getState())
|
||||
// .eq(AppUser::getIsPrimary, false)
|
||||
// .eq(AppUser::getCompanyId, "," + c + ",")
|
||||
// .list();
|
||||
// if (CollectionUtil.isNotEmpty(users)) {
|
||||
// users.forEach(u -> {
|
||||
// u.setExpireTime(u.getExpireTime().plusMonths(request.getMonth()));
|
||||
// u.setUpdateBy(AdminUserUtil.getUserId());
|
||||
// u.setUpdateTime(now);
|
||||
// });
|
||||
// updateBatchById(users);
|
||||
// }
|
||||
// });
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -458,31 +517,53 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
|
||||
@Override
|
||||
public void activateUser(UserActivateRequest request) {
|
||||
String email="";
|
||||
String code="";
|
||||
try {
|
||||
email=StrUtil.str(Base64.getUrlDecoder().decode(request.getCode()), Charset.defaultCharset());
|
||||
code=StrUtil.str(Base64.getUrlDecoder().decode(request.getCode()), Charset.defaultCharset());
|
||||
}catch (IllegalArgumentException ex){
|
||||
log.error("无效的code:"+request.getCode());
|
||||
throw new NflgException(STATE.ParamErr,"无效的code:"+request.getCode());
|
||||
}
|
||||
AppUser appUser = lambdaQuery()
|
||||
.eq(AppUser::getLoginName, email)
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("用户不存在或随机码不正确");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(appUser.getState(), UserState.ToBeActivated.getState()))
|
||||
.throwMessage("当前状态不允许激活");
|
||||
VUtils.trueThrowBusinessError(PASSWORDENCODER.matches(request.getCode(), appUser.getPassword()))
|
||||
.throwMessage("随机码不正确");
|
||||
appUser.setState(UserState.Activated.getState());
|
||||
appUser.setPassword(PASSWORDENCODER.encode(request.getPassword()));
|
||||
appUser.setUpdateTime(LocalDateTime.now());
|
||||
updateById(appUser);
|
||||
String email=code.split("\\|")[0];
|
||||
String type=code.split("\\|")[1];
|
||||
if (StrUtil.equals("0", type)) {
|
||||
AppUser appUser = lambdaQuery()
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.eq(AppUser::getLoginName, email)
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("用户不存在或随机码不正确");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(appUser.getState(), UserState.ToBeActivated.getState()))
|
||||
.throwMessage("当前状态不允许激活");
|
||||
VUtils.trueThrowBusinessError(PASSWORDENCODER.matches(request.getCode(), appUser.getPassword()))
|
||||
.throwMessage("随机码不正确");
|
||||
appUser.setState(UserState.Activated.getState());
|
||||
appUser.setPassword(PASSWORDENCODER.encode(request.getPassword()));
|
||||
appUser.setUpdateTime(LocalDateTime.now());
|
||||
updateById(appUser);
|
||||
}else if (StrUtil.equals("1", type)){
|
||||
//修改邮箱
|
||||
code=redisTemplate.opsForValue().get(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + email);
|
||||
VUtils.trueThrowBusinessError(!StrUtil.equals(code, request.getRandomCode()))
|
||||
.throwMessage("无效的激活码");
|
||||
String email1=redisTemplate.opsForValue().get(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code);
|
||||
VUtils.trueThrowBusinessError(StrUtil.isBlank(email1))
|
||||
.throwMessage("无效的激活码");
|
||||
lambdaUpdate()
|
||||
.set(AppUser::getEmail, email1)
|
||||
.set(AppUser::getState, UserState.Activated.getState())
|
||||
.set(AppUser::getUpdateTime,LocalDateTime.now())
|
||||
.eq(AppUser::getLoginName, email)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppUser forgetPassword(String email, String password) {
|
||||
String encodePassword = PASSWORDENCODER.encode(password);
|
||||
AppUser user = lambdaQuery().eq(AppUser::getLoginName, email).one();
|
||||
AppUser user = lambdaQuery()
|
||||
.eq(AppUser::getIsDel,false)
|
||||
.eq(AppUser::getLoginName, email)
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(user)).throwMessage("用户不存在");
|
||||
VUtils.trueThrowBusinessError(Objects.equals(user.getState(), UserState.Disabled.getState()))
|
||||
.throwMessage("禁用状态不能重设密码");
|
||||
|
|
@ -496,6 +577,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
@Override
|
||||
public AppUser getPrimaryByCompanyId(String companyId) {
|
||||
LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AppUser::getIsDel,false);
|
||||
queryWrapper.eq(AppUser::getIsPrimary, true);
|
||||
queryWrapper.apply("FIND_IN_SET({0}, company_id)>0", companyId);
|
||||
return getBaseMapper().selectOne(queryWrapper);
|
||||
|
|
@ -503,6 +585,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
|
||||
private List<AppUserVO> getByCompanyId(Integer companyId) {
|
||||
return lambdaQuery()
|
||||
.eq(AppUser::getIsDel,false)
|
||||
.eq(AppUser::getCompanyId, companyId.toString())
|
||||
.eq(AppUser::getState, UserState.Activated.getState())
|
||||
.eq(AppUser::getIsPrimary, false)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.nflg.mobilebroken.repository.service.impl;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AreaSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.TBaseAreaVO;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseArea;
|
||||
import com.nflg.mobilebroken.repository.mapper.TBaseAreaMapper;
|
||||
|
|
@ -12,7 +11,6 @@ import org.apache.ibatis.annotations.Param;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -43,17 +41,4 @@ public class TBaseAreaServiceImpl extends ServiceImpl<TBaseAreaMapper, TBaseArea
|
|||
return this.getBaseMapper().getCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AreaSimpleVO> getSimpleAreas() {
|
||||
List<TBaseArea> datas = lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren);
|
||||
return vos;
|
||||
}
|
||||
|
||||
private void bindChildren(AreaSimpleVO vo) {
|
||||
List<TBaseArea> datas = lambdaQuery().eq(TBaseArea::getParentAreaRowId, vo.getId()).eq(TBaseArea::getAreaState, 1).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,4 +70,35 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
|
|||
.setName(d.getAgencyCompanyName()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompanySimpleVO> getSimpleCompanysFromAdmin(Integer userId) {
|
||||
List<TBaseCustomer> datas;
|
||||
if (Objects.isNull(userId)){
|
||||
datas = lambdaQuery()
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.list();
|
||||
}else {
|
||||
AppUser appUser = appUserService.getById(userId);
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("用户不存在");
|
||||
if (appUser.getIsPrimary()){
|
||||
datas = lambdaQuery()
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.list();
|
||||
}else {
|
||||
datas = lambdaQuery()
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.in(TBaseCustomer::getId, StrUtil.split(appUser.getCompanyId(), ",").stream().map(Integer::parseInt).collect(Collectors.toList()))
|
||||
.list();
|
||||
}
|
||||
}
|
||||
return datas.stream()
|
||||
.map(d -> new CompanySimpleVO()
|
||||
.setId(d.getId())
|
||||
.setName(d.getAgencyCompanyName()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.nflg.mobilebroken.common.constant.TicketUrgency;
|
|||
import com.nflg.mobilebroken.common.pojo.dto.UserDTO;
|
||||
import com.nflg.mobilebroken.common.pojo.request.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.AdminUserSimpleVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.TicketVO;
|
||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||
import com.nflg.mobilebroken.common.util.AppUserUtil;
|
||||
|
|
@ -287,4 +288,11 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
.lt(Ticket::getUpdateTime, LocalDateTime.now().minusDays(days-1))
|
||||
.list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AdminUserSimpleVO> getTicketHandle(Integer id) {
|
||||
Ticket ticket=getById(id);
|
||||
List<Integer> handles=Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).collect(Collectors.toList());
|
||||
return adminUserService.getSimples(handles);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,17 @@
|
|||
SELECT u.*
|
||||
FROM admin_role r
|
||||
INNER JOIN admin_user_role_map urm ON r.id=urm.role_id
|
||||
INNER JOIN admin_user u ON urm.user_id=u.id
|
||||
INNER JOIN admin_user u ON urm.user_id=u.id AND u.is_del=0
|
||||
WHERE r.`code`=#{roleCode}
|
||||
</select>
|
||||
|
||||
<select id="getSimples" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminUserSimpleVO">
|
||||
SELECT au.id AS 'userId',au.user_code,au.user_name,dp.dept_name AS 'departmentName'
|
||||
FROM admin_user au
|
||||
LEFT JOIN t_base_department dp ON au.department_id=dp.id
|
||||
WHERE au.id IN
|
||||
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
|
||||
#{userId}
|
||||
</foreach>
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
INNER JOIN app_area a ON u.area_id=a.id
|
||||
LEFT JOIN app_user uc ON u.create_by=uc.id
|
||||
LEFT JOIN app_user uu ON u.update_by=uu.id
|
||||
WHERE u.is_primary=false AND u.company_id IN
|
||||
WHERE u.is_del=0 AND u.is_primary=false AND u.company_id IN
|
||||
<foreach collection="request.companyIds" item="companyId" open="(" separator="," close=")">
|
||||
#{companyId}
|
||||
</foreach>
|
||||
|
|
@ -64,7 +64,7 @@
|
|||
LEFT JOIN app_user uc ON u.create_by=uc.id
|
||||
LEFT JOIN app_user uu ON u.update_by=uu.id
|
||||
LEFT JOIN t_base_position p ON u.title_id=p.id
|
||||
WHERE u.is_primary=false AND u.company_id=#{companyId}
|
||||
WHERE u.is_del=0 AND u.is_primary=false AND u.company_id=#{companyId}
|
||||
<if test="state != null">
|
||||
AND u.state = #{state}
|
||||
</if>
|
||||
|
|
|
|||
Loading…
Reference in New Issue