From 0fbc9000f7f38fe427ce4d7e316e00da360082f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sat, 22 Feb 2025 23:15:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=80=E4=BA=9B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/AdminUserController.java | 55 ++++- .../admin/controller/AppUserController.java | 170 +++++++++++-- .../admin/controller/TicketController.java | 11 + .../admin/event/TicketCompleteEvent.java | 50 +++- .../admin/task/AppUserScheduledTasks.java | 55 +++++ .../common/constant/Constant.java | 6 + ...Request.java => AppUserUpdateRequest.java} | 2 +- .../common/pojo/request/DeleteRequest.java | 9 + .../request/PrimaryAppUserAddRequest.java | 3 + .../common/pojo/vo/AdminUserSimpleVO.java | 19 ++ nflg-mobilebroken-repository/pom.xml | 4 + .../repository/entity/AdminUser.java | 5 + .../repository/entity/AppUser.java | 5 + .../repository/mapper/AdminUserMapper.java | 3 + .../repository/service/IAdminUserService.java | 7 +- .../repository/service/IAppUserService.java | 13 +- .../repository/service/ITBaseAreaService.java | 3 - .../service/ITBaseCustomerService.java | 2 + .../repository/service/ITicketService.java | 3 + .../service/impl/AdminUserServiceImpl.java | 91 ++++--- .../impl/AppUserApplyforServiceImpl.java | 1 + .../service/impl/AppUserServiceImpl.java | 225 ++++++++++++------ .../service/impl/TBaseAreaServiceImpl.java | 15 -- .../impl/TBaseCustomerServiceImpl.java | 31 +++ .../service/impl/TicketServiceImpl.java | 8 + .../main/resources/mapper/AdminUserMapper.xml | 12 +- .../main/resources/mapper/AppUserMapper.xml | 4 +- 27 files changed, 646 insertions(+), 166 deletions(-) create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/AppUserScheduledTasks.java rename nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/{PrimaryAppUserUpdateRequest.java => AppUserUpdateRequest.java} (74%) create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/DeleteRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserSimpleVO.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java index e9f4658d..1fc5941e 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java @@ -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 updateAccount(@Valid @RequestBody AccountUpdateRequest request) { - adminUserService.update(request); + public ApiResult 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 deleteAccount(@Valid @RequestBody DeleteRequest request){ + adminUserService.deleteAccount(request.getId()); + return ApiResult.success(); + } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java index 0b100608..bb765b8a 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java @@ -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 redisTemplate; + /** * 获取公司列表 + * @param userId 用户id * @return 部门列表 */ - @PostMapping("getSimpleCompanys") + @GetMapping("getSimpleCompanys") @ApiMark(moduleName = "代理商管理", apiName = "获取公司列表") - public ApiResult> getSimpleCompanys() { - return ApiResult.success(customerService.getSimpleCompanys()); + public ApiResult> getSimpleCompanys(@Valid @RequestParam Integer userId) { + return ApiResult.success(customerService.getSimpleCompanysFromAdmin(userId)); } /** * 获取区域列表 + * @param userId 用户id * @return 部门列表 */ - @PostMapping("getSimpleAreas") + @GetMapping("getSimpleAreas") @ApiMark(moduleName = "代理商管理", apiName = "获取区域列表") - public ApiResult> getSimpleAreas() { - return ApiResult.success(areaService.getSimpleAreas()); + public ApiResult> 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 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 updatePrimaryAppUser(@Valid @RequestBody PrimaryAppUserUpdateRequest request) { - appUserService.updatePrimaryAppUser(request); + @PostMapping("updateAppUser") + @MethodInfoMark(value = "更新代理商账号", menuName = "代理商管理") + @ApiMark(moduleName = "代理商管理", apiName = "更新代理商账号") + public ApiResult 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 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 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> searchSimpleUsers(@Valid @RequestBody SimpleUsersSearchRequest request) { - return ApiResult.success(appUserService.searchSimpleUsers(request)); + @GetMapping("getSimpleUsers") + @ApiMark(moduleName = "代理商管理", apiName = "获取代理商子账号列表") + public ApiResult> 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 hasChildren(@Valid @RequestParam Integer id) { + return ApiResult.success(appUserService.hasChildren(id)); + } + + /** + * 删除代理商 + * @param request 请求参数 + */ + @PostMapping("deleteAppUser") + public ApiResult deleteAppUser(@Valid @RequestBody DeleteRequest request){ + appUserService.deleteAppUser(request.getId()); + return ApiResult.success(); + } } \ No newline at end of file diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java index b7a8275c..f7267dd8 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java @@ -174,6 +174,17 @@ public class TicketController extends ControllerBase { return ApiResult.success(); } + /** + * 获取工单处理人 + * @param id 工单id + * @return 工单处理人列表 + */ + @GetMapping("getTicketHandle") + @ApiMark(moduleName = "工单管理", apiName = "获取工单处理人") + public ApiResult> getTicketHandle(@Valid @RequestParam @NotNull(message = "工单编号不能为空") Integer id){ + return ApiResult.success(ticketService.getTicketHandle(id)); + } + /** * 添加工单处理人 * @param request 请求参数 diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCompleteEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCompleteEvent.java index b5f61329..6cab0dd7 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCompleteEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCompleteEvent.java @@ -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 cqmUserIds=deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()); + if (CollectionUtil.isNotEmpty(cqmUserIds)) { + List cqmUsers = adminUserService.listByIds(cqmUserIds); + if (CollectionUtil.isNotEmpty(cqmUsers)) { + List handleUserIds = Arrays.stream(ticket.getHandle().split(",")).filter(StrUtil::isNotBlank).map(Integer::parseInt).collect(Collectors.toList()); + List 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 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); + } + } + } + } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/AppUserScheduledTasks.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/AppUserScheduledTasks.java new file mode 100644 index 00000000..48baa9b7 --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/AppUserScheduledTasks.java @@ -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 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 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(); + } + } + } + } +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java index 42980645..7ccb4bee 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java @@ -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"; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserUpdateRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AppUserUpdateRequest.java similarity index 74% rename from nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserUpdateRequest.java rename to nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AppUserUpdateRequest.java index 190bbb76..cbd95f11 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserUpdateRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AppUserUpdateRequest.java @@ -5,7 +5,7 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = false) @Data -public class PrimaryAppUserUpdateRequest extends PrimaryAppUserAddRequest { +public class AppUserUpdateRequest extends PrimaryAppUserAddRequest { private Integer id; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/DeleteRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/DeleteRequest.java new file mode 100644 index 00000000..7977e297 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/DeleteRequest.java @@ -0,0 +1,9 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class DeleteRequest { + + private Integer id; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserAddRequest.java index c18e4e2b..d2567807 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserAddRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserAddRequest.java @@ -50,4 +50,7 @@ public class PrimaryAppUserAddRequest { @JsonIgnore private String password; + + //职位id + private Integer titleId; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserSimpleVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserSimpleVO.java new file mode 100644 index 00000000..6f19435f --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserSimpleVO.java @@ -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; +} diff --git a/nflg-mobilebroken-repository/pom.xml b/nflg-mobilebroken-repository/pom.xml index 84439c03..a4410904 100644 --- a/nflg-mobilebroken-repository/pom.xml +++ b/nflg-mobilebroken-repository/pom.xml @@ -55,6 +55,10 @@ org.springframework.security spring-security-crypto + + org.springframework.data + spring-data-redis + diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminUser.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminUser.java index 81455bb2..606e2561 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminUser.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminUser.java @@ -103,4 +103,9 @@ public class AdminUser implements Serializable { * 最后更新时间 */ private LocalDateTime updateTime; + + /** + * 删除状态,0:未删除,1:已删除 + */ + private Boolean isDel; } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUser.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUser.java index a49987d0..e00a46dd 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUser.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUser.java @@ -129,4 +129,9 @@ public class AppUser implements Serializable { * 过期时间 */ private LocalDate expireTime; + + /** + * 删除状态,0:未删除,1:已删除 + */ + private Boolean isDel; } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminUserMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminUserMapper.java index 735a79fa..22d8a283 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminUserMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminUserMapper.java @@ -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 { List getByRoleCode(String roleCode); + + List getSimples(List userIds); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminUserService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminUserService.java index 8b294a03..2a459a3e 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminUserService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminUserService.java @@ -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 add(AccountAddRequest request); - void update(AccountUpdateRequest request); - void enable(EnableAccountRequest request); PageData search(SearchAccountRequest request); @@ -47,4 +46,8 @@ public interface IAdminUserService extends IService { List getForAccountReview(); AdminUserVO getInfo(Integer userId); + + List getSimples(List userIds); + + void deleteAccount(Integer id); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppUserService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppUserService.java index e02afb7f..9c7f56d9 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppUserService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppUserService.java @@ -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 addPrimaryAppUser(PrimaryAppUserAddRequest request); - void updatePrimaryAppUser(PrimaryAppUserUpdateRequest request); - void migrate(MigrateAppUserRequest request); PageData searchAppUserForAdmin(SearchAppUserForAdminRequest request); @@ -54,4 +53,14 @@ public interface IAppUserService extends IService { AppUser forgetPassword(String email, String password); AppUser getPrimaryByCompanyId(String companyId); + + List getChildren(AppUser primaryUser); + + Boolean hasChildren(Integer id); + + List getSimpleUsers(Integer id); + + void deleteAppUser(Integer id); + + List getSimpleAreas(Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseAreaService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseAreaService.java index f03f7869..8e9882df 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseAreaService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseAreaService.java @@ -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 { Integer getCount(); - - List getSimpleAreas(); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseCustomerService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseCustomerService.java index 2ac7379c..32f1d35d 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseCustomerService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBaseCustomerService.java @@ -27,4 +27,6 @@ public interface ITBaseCustomerService extends IService { List getSimpleCompanys(Integer userId); List getSimpleCompanys(); + + List getSimpleCompanysFromAdmin(Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java index cae4012b..1a9b564a 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java @@ -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 addTicketHandle(TicketHandleAddRequest request); List getNonComment(int days); + + List getTicketHandle(Integer id); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java index 8ae11ef8..15805741 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java @@ -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 redisTemplate; + @Override public AdminUser getUser(String userName, String password) { AdminUser user = lambdaQuery() @@ -86,26 +91,6 @@ public class AdminUserServiceImpl extends ServiceImpl search(SearchAccountRequest request) { IPage 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 getSimples(List 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) diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java index b17fdb49..d66073b9 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java @@ -155,6 +155,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl impl @Resource private ITBaseAreaService adminAreaService; + @Resource + private RedisTemplate 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 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 impl } @Override - public void updatePrimaryAppUser(PrimaryAppUserUpdateRequest request) { - VUtils.trueThrowBusinessError(lambdaQuery() - .eq(AppUser::getLoginName, request.getLoginName()) - .ne(AppUser::getId, request.getId()) - .exists()) - .throwMessage("登录名已存在"); - List 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 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 getChildren(AppUser primaryUser) { + String[] companyIds = primaryUser.getCompanyId().split(","); + LambdaQueryWrapper 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 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 getSimpleUsers(Integer id) { + AppUser primaryUser=getById(id); + List companyIds = Arrays.stream(primaryUser.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()); + List 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 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 getSimpleAreas(Integer userId) { + if (Objects.isNull(userId)){ + List datas = adminAreaService.lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list(); + List 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 datas = adminAreaService.lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list(); + List vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList()); + vos.forEach(this::bindChildren); + return vos; + }else { + List datas = appAreaService.lambdaQuery().eq(AppArea::getEnable, true).eq(AppArea::getParentId, 0).list(); + List 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 datas = appAreaService.lambdaQuery().eq(AppArea::getParentId, vo.getId()).eq(AppArea::getEnable, true).list(); + List 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 datas = adminAreaService.lambdaQuery().eq(TBaseArea::getParentAreaRowId, vo.getId()).eq(TBaseArea::getAreaState, 1).list(); + List 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 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 impl @Override public PageData searchAppUserForAdmin(SearchAppUserForAdminRequest request) { IPage 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 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 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 impl VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("主账号不存在"); String[] companyIds = appUser.getCompanyId().split(","); LambdaQueryWrapper 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 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 companys = StrUtil.split(",", appUser.getCompanyId()); -// companys.forEach(c -> { -// List 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 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 impl @Override public AppUser getPrimaryByCompanyId(String companyId) { LambdaQueryWrapper 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 impl private List getByCompanyId(Integer companyId) { return lambdaQuery() + .eq(AppUser::getIsDel,false) .eq(AppUser::getCompanyId, companyId.toString()) .eq(AppUser::getState, UserState.Activated.getState()) .eq(AppUser::getIsPrimary, false) diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseAreaServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseAreaServiceImpl.java index 4f53340b..4ff02389 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseAreaServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseAreaServiceImpl.java @@ -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; /** *

@@ -43,17 +41,4 @@ public class TBaseAreaServiceImpl extends ServiceImpl getSimpleAreas() { - List datas = lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list(); - List 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 datas = lambdaQuery().eq(TBaseArea::getParentAreaRowId, vo.getId()).eq(TBaseArea::getAreaState, 1).list(); - List vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList()); - vos.forEach(this::bindChildren); - } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java index 27046486..13de38b7 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java @@ -70,4 +70,35 @@ public class TBaseCustomerServiceImpl extends ServiceImpl getSimpleCompanysFromAdmin(Integer userId) { + List 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()); + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java index 5677d736..6358a39c 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java @@ -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 impleme .lt(Ticket::getUpdateTime, LocalDateTime.now().minusDays(days-1)) .list(); } + + @Override + public List getTicketHandle(Integer id) { + Ticket ticket=getById(id); + List handles=Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).collect(Collectors.toList()); + return adminUserService.getSimples(handles); + } } diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminUserMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminUserMapper.xml index 0ada4c53..812d2367 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminUserMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminUserMapper.xml @@ -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} + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml index 20a099c0..99b48a03 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml @@ -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 #{companyId} @@ -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} AND u.state = #{state}