fix: 修复一些问题

This commit is contained in:
曹鹏飞 2025-03-03 21:13:01 +08:00
parent e843fde8c9
commit 33317cbdc6
21 changed files with 327 additions and 81 deletions

View File

@ -305,7 +305,7 @@ public class AdminUserController extends ControllerBase {
String redisKey = StrUtil.format(Constant.REDIS_KEY_USER_UPDATE_KAPTCHA_ADMIN, AdminUserUtil.getEmail()); String redisKey = StrUtil.format(Constant.REDIS_KEY_USER_UPDATE_KAPTCHA_ADMIN, AdminUserUtil.getEmail());
String captcha = redisTemplate.opsForValue().get(redisKey); String captcha = redisTemplate.opsForValue().get(redisKey);
VUtils.trueThrowBusinessError(StrUtil.isBlank(captcha)).throwMessage("验证码已失效,请重新获取"); VUtils.trueThrowBusinessError(StrUtil.isBlank(captcha)).throwMessage("验证码已失效,请重新获取");
VUtils.trueThrowBusinessError(StrUtil.equals(captcha, request.getCaptcha())).throwMessage("验证码不正确"); VUtils.trueThrowBusinessError(!StrUtil.equals(captcha, request.getCaptcha())).throwMessage("验证码不正确");
adminUserService.updatePassword(AdminUserUtil.getUserId(), request.getNewPassword()); adminUserService.updatePassword(AdminUserUtil.getUserId(), request.getNewPassword());
redisTemplate.delete(redisKey); redisTemplate.delete(redisKey);
return ApiResult.success(); return ApiResult.success();

View File

@ -81,7 +81,7 @@ public class MenuController extends ControllerBase {
@MethodInfoMark(value = "删除菜单", menuName = "菜单管理") @MethodInfoMark(value = "删除菜单", menuName = "菜单管理")
@ApiMark(moduleName = "菜单管理", apiName = "删除菜单") @ApiMark(moduleName = "菜单管理", apiName = "删除菜单")
public ApiResult<Void> deleteMenu(@Valid @RequestBody List<Integer> ids) { public ApiResult<Void> deleteMenu(@Valid @RequestBody List<Integer> ids) {
adminMenuService.removeByIds(ids); adminMenuService.delete(ids);
return ApiResult.success(); return ApiResult.success();
} }

View File

@ -132,6 +132,16 @@ public class TicketController extends ControllerBase {
return ApiResult.success(); return ApiResult.success();
} }
/**
* 更新收藏夹名称
* @param request 请求信息
*/
@PostMapping("updateFavorites")
public ApiResult<Void> updateFavorites(@Valid @RequestBody FavoritesUpdateRequest request){
ticketFavoritesService.updateFavorites(request,AdminUserUtil.getUserId());
return ApiResult.success();
}
/** /**
* 删除收藏夹 * 删除收藏夹
* @param favoritesId 收藏夹id * @param favoritesId 收藏夹id
@ -144,6 +154,26 @@ public class TicketController extends ControllerBase {
return ApiResult.success(); return ApiResult.success();
} }
/**
* 移动收藏夹
* @param request 请求信息
*/
@PostMapping("moveFavorites")
public ApiResult<Void> moveFavorites(@Valid @RequestBody FavoritesMoveRequest request){
ticketFavoritesService.moveFavorites(AdminUserUtil.getUserId(),request);
return ApiResult.success();
}
/**
* 移动收藏夹工单
* @param request 请求信息
*/
@PostMapping("moveFavoritesTicket")
public ApiResult<Void> moveFavoritesTicket(@Valid @RequestBody FavoritesTicketMoveRequest request){
ticketFavoritesService.moveFavoritesTicket(AdminUserUtil.getUserId(),request);
return ApiResult.success();
}
/** /**
* 关注工单 * 关注工单
* @param request 请求信息 * @param request 请求信息
@ -590,11 +620,12 @@ public class TicketController extends ControllerBase {
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState()))
.throwMessage("当前工单状态不允许发送消息"); .throwMessage("当前工单状态不允许发送消息");
List<Integer> handles=Arrays.stream(ticket.getHandle().split(",")) List<Integer> adminUsers=adminUserService.getTickerMangagers();
.map(Integer::parseInt).collect(Collectors.toList()); adminUsers.addAll(Arrays.stream(ticket.getHandle().split(","))
VUtils.trueThrowBusinessError(handles.stream() .map(Integer::parseInt).collect(Collectors.toList()));
VUtils.trueThrowBusinessError(adminUsers.stream()
.noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId()))) .noneMatch(uid -> Objects.equals(uid, AdminUserUtil.getUserId())))
.throwMessage("只有工单处理人能发送消息"); .throwMessage("你无权发送消息");
ticket.setCurrentHandle(AdminUserUtil.getUserId()); ticket.setCurrentHandle(AdminUserUtil.getUserId());
ticketService.updateById(ticket); ticketService.updateById(ticket);
AdminUser user = adminUserService.getById(AdminUserUtil.getUserId()); AdminUser user = adminUserService.getById(AdminUserUtil.getUserId());

View File

@ -29,4 +29,7 @@ public class AdminTicketSearchRequest extends TicketSearchRequest {
//是否是工单管理者 //是否是工单管理者
@JsonIgnore @JsonIgnore
private boolean ticketManager; private boolean ticketManager;
//收藏夹id
private Integer favouritesId;
} }

View File

@ -0,0 +1,20 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class FavoritesMoveRequest {
// 拖动的收藏夹id
@NotNull
private Integer favoritesId;
// 新的父级id
@NotNull
private Integer newParentId;
// 后一个节点的id
private Integer nextFavoritesId;
}

View File

@ -0,0 +1,17 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class FavoritesTicketMoveRequest {
//工单id
@NotNull
private Integer ticketId;
//新的收藏夹id
@NotNull
private Integer favoritesId;
}

View File

@ -0,0 +1,19 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class FavoritesUpdateRequest {
// 收藏夹id
@NotNull
private Integer id;
// 收藏夹新名称
@NotBlank
private String name;
}

View File

@ -3,6 +3,7 @@ package com.nflg.mobilebroken.common.util;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.PageData;
import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -13,7 +14,7 @@ public class PageUtil {
pageData.setPage((int) page.getCurrent()); pageData.setPage((int) page.getCurrent());
pageData.setPageSize((int) page.getSize()); pageData.setPageSize((int) page.getSize());
pageData.setTotal((int) page.getTotal()); pageData.setTotal((int) page.getTotal());
pageData.setItems(page.getRecords().stream().map(mapper).collect(Collectors.toList())); pageData.setItems(page.getRecords().stream().map(mapper).filter(Objects::nonNull).collect(Collectors.toList()));
return pageData; return pageData;
} }
} }

View File

@ -39,6 +39,11 @@ public class TicketFavorites implements Serializable {
*/ */
private String name; private String name;
/**
* 排序号
*/
private Integer orderNum;
/** /**
* 创建人 * 创建人
*/ */

View File

@ -2,6 +2,7 @@ package com.nflg.mobilebroken.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.mobilebroken.common.pojo.request.AdminTicketSearchRequest; import com.nflg.mobilebroken.common.pojo.request.AdminTicketSearchRequest;
import com.nflg.mobilebroken.common.pojo.request.TicketSearchRequest; import com.nflg.mobilebroken.common.pojo.request.TicketSearchRequest;
import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO; import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO;
@ -36,5 +37,7 @@ public interface TicketMapper extends BaseMapper<Ticket> {
List<AdminTicketVO> searchAllFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId); List<AdminTicketVO> searchAllFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId);
List<TicketVO> getAdminFavorites(Integer favoritesId); List<TicketVO> getAdminFavorites(Integer userId,Integer favoritesId);
IPage<AdminTicketVO> searchByFavouritesId(Integer userId, Integer favouritesId, Page<?> page);
} }

View File

@ -31,4 +31,6 @@ public interface IAdminMenuService extends IService<AdminMenu> {
List<AuthorizeMenuVO> getMenuForAuthorize(Integer roleId); List<AuthorizeMenuVO> getMenuForAuthorize(Integer roleId);
IPage<MenuVO> search(MenuSearchRequest request); IPage<MenuVO> search(MenuSearchRequest request);
void delete(List<Integer> ids);
} }

View File

@ -27,7 +27,7 @@ public interface IAdminUserService extends IService<AdminUser> {
PageData<AdminUserVO> search(SearchAccountRequest request); PageData<AdminUserVO> search(SearchAccountRequest request);
List<AdminUser> getCQM(); // List<AdminUser> getCQM();
void authorizeRole(AuthorizeRoleRequest request); void authorizeRole(AuthorizeRoleRequest request);

View File

@ -2,6 +2,9 @@ package com.nflg.mobilebroken.repository.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.mobilebroken.common.pojo.request.AdminFavoritesRequest; import com.nflg.mobilebroken.common.pojo.request.AdminFavoritesRequest;
import com.nflg.mobilebroken.common.pojo.request.FavoritesMoveRequest;
import com.nflg.mobilebroken.common.pojo.request.FavoritesTicketMoveRequest;
import com.nflg.mobilebroken.common.pojo.request.FavoritesUpdateRequest;
import com.nflg.mobilebroken.common.pojo.vo.FavoritesVO; import com.nflg.mobilebroken.common.pojo.vo.FavoritesVO;
import com.nflg.mobilebroken.repository.entity.TicketFavorites; import com.nflg.mobilebroken.repository.entity.TicketFavorites;
@ -20,4 +23,10 @@ public interface ITicketFavoritesService extends IService<TicketFavorites> {
void addFavorites(AdminFavoritesRequest request, Integer userId); void addFavorites(AdminFavoritesRequest request, Integer userId);
void deleteFavorites(Integer userId,Integer favoritesId); void deleteFavorites(Integer userId,Integer favoritesId);
void updateFavorites(FavoritesUpdateRequest request, Integer userId);
void moveFavorites(Integer userId, FavoritesMoveRequest request);
void moveFavoritesTicket(Integer userId, FavoritesTicketMoveRequest request);
} }

View File

@ -51,5 +51,5 @@ public interface ITicketService extends IService<Ticket> {
List<AdminUserSimpleVO> getTicketHandle(Integer id); List<AdminUserSimpleVO> getTicketHandle(Integer id);
List<TicketVO> getAdminFavorites(Integer favoritesId); List<TicketVO> getAdminFavorites(Integer userId,Integer favoritesId);
} }

View File

@ -13,6 +13,7 @@ import com.nflg.mobilebroken.common.pojo.vo.AuthorizeMenuVO;
import com.nflg.mobilebroken.common.pojo.vo.MenuVO; import com.nflg.mobilebroken.common.pojo.vo.MenuVO;
import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.PageUtil; import com.nflg.mobilebroken.common.util.PageUtil;
import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.AdminMenu; import com.nflg.mobilebroken.repository.entity.AdminMenu;
import com.nflg.mobilebroken.repository.entity.AdminMenuButton; import com.nflg.mobilebroken.repository.entity.AdminMenuButton;
import com.nflg.mobilebroken.repository.entity.AdminRoleButtonMap; import com.nflg.mobilebroken.repository.entity.AdminRoleButtonMap;
@ -23,6 +24,7 @@ import com.nflg.mobilebroken.repository.service.IAdminMenuService;
import com.nflg.mobilebroken.repository.service.IAdminRoleButtonMapService; import com.nflg.mobilebroken.repository.service.IAdminRoleButtonMapService;
import com.nflg.mobilebroken.repository.service.IAdminRoleMenuMapService; import com.nflg.mobilebroken.repository.service.IAdminRoleMenuMapService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -94,13 +96,40 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
updateById(menu); updateById(menu);
} }
@Transactional
@Override @Override
public void enableMenu(EnableMenuRequest request) { public void enableMenu(EnableMenuRequest request) {
if (request.isEnable()){
enable(request.getIds());
}else {
disable(request.getIds());
}
}
private void disable(List<Integer> ids){
if (CollectionUtil.isNotEmpty(ids)) {
lambdaUpdate()
.set(AdminMenu::getEnable, false)
.set(AdminMenu::getUpdateBy, AdminUserUtil.getUserName())
.set(AdminMenu::getUpdateTime, LocalDateTime.now())
.in(AdminMenu::getId, ids)
.update();
adminMenuButtonService.lambdaUpdate()
.set(AdminMenuButton::getEnable, false)
.set(AdminMenuButton::getUpdateBy, AdminUserUtil.getUserName())
.set(AdminMenuButton::getUpdateTime, LocalDateTime.now())
.in(AdminMenuButton::getMenuId, ids)
.update();
disable(lambdaQuery().in(AdminMenu::getParentId, ids).list().stream().map(AdminMenu::getId).collect(Collectors.toList()));
}
}
private void enable(List<Integer> ids){
lambdaUpdate() lambdaUpdate()
.set(AdminMenu::getEnable, request.isEnable()) .set(AdminMenu::getEnable, true)
.set(AdminMenu::getUpdateBy, AdminUserUtil.getUserName()) .set(AdminMenu::getUpdateBy, AdminUserUtil.getUserName())
.set(AdminMenu::getUpdateTime, LocalDateTime.now()) .set(AdminMenu::getUpdateTime, LocalDateTime.now())
.in(AdminMenu::getId, request.getIds()) .in(AdminMenu::getId, ids)
.update(); .update();
} }
@ -159,6 +188,15 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
} }
} }
@Transactional
@Override
public void delete(List<Integer> ids) {
VUtils.trueThrowBusinessError(lambdaQuery().in(AdminMenu::getParentId, ids).exists()).throwMessage("请先删除下级菜单");
VUtils.trueThrowBusinessError(adminMenuButtonService.lambdaQuery().in(AdminMenuButton::getMenuId, ids).exists())
.throwMessage("请先删除下级按钮");
removeByIds(ids);
}
private void getParent(MenuVO child, List<MenuVO> datas) { private void getParent(MenuVO child, List<MenuVO> datas) {
AdminMenu parent = lambdaQuery().eq(AdminMenu::getId, child.getParentId()).one(); AdminMenu parent = lambdaQuery().eq(AdminMenu::getId, child.getParentId()).one();
if (Objects.nonNull(parent)) { if (Objects.nonNull(parent)) {

View File

@ -73,21 +73,36 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
@Override @Override
public AdminUser add(AccountAddRequest request) { public AdminUser add(AccountAddRequest request) {
VUtils.trueThrowBusinessError(lambdaQuery().eq(AdminUser::getLoginName, request.getLoginName()).exists()) AdminUser user=lambdaQuery().eq(AdminUser::getLoginName, request.getLoginName()).one();
.throwMessage("已存在登录名为"+request.getLoginName()+"的账号"); if (Objects.nonNull(user)){
AdminUser user = new AdminUser() VUtils.trueThrowBusinessError(!user.getIsDel())
.setUserCode(request.getUserCode()) .throwMessage("登录名已存在");
.setUserName(request.getUserName()) user.setIsDel(false)
.setAvatar(request.getAvatar()) .setUserCode(request.getUserCode())
.setDepartmentId(request.getDepartmentId()) .setAvatar(request.getAvatar())
.setEmail(request.getEmail()) .setState(UserState.ToBeActivated.getState())
.setState(UserState.ToBeActivated.getState()) .setTitleId(request.getTitleId())
.setLoginName(request.getLoginName()) .setPhone(request.getPhone())
.setPhone(request.getPhone()) .setUserName(request.getUserName())
.setTitleId(request.getTitleId()) .setDepartmentId(request.getDepartmentId())
.setCreateBy(AdminUserUtil.getUserId()) .setUpdateBy(AdminUserUtil.getUserId())
.setCreateTime(LocalDateTime.now()); .setUpdateTime(LocalDateTime.now());
save(user); updateById(user);
}else {
user = new AdminUser()
.setUserCode(request.getUserCode())
.setUserName(request.getUserName())
.setAvatar(request.getAvatar())
.setDepartmentId(request.getDepartmentId())
.setEmail(request.getEmail())
.setState(UserState.ToBeActivated.getState())
.setLoginName(request.getLoginName())
.setPhone(request.getPhone())
.setTitleId(request.getTitleId())
.setCreateBy(AdminUserUtil.getUserId())
.setCreateTime(LocalDateTime.now());
save(user);
}
return user; return user;
} }
@ -137,20 +152,20 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
return pageData; return pageData;
} }
@Override // @Override
public List<AdminUser> getCQM() { // public List<AdminUser> getCQM() {
TBasePosition position = positionService.lambdaQuery() // TBasePosition position = positionService.lambdaQuery()
.eq(TBasePosition::getDataValidState, 1) // .eq(TBasePosition::getDataValidState, 1)
.eq(TBasePosition::getPositionCode, Constant.DICTIONARY_TYPE_TITLE_CQM) // .eq(TBasePosition::getPositionCode, Constant.DICTIONARY_TYPE_TITLE_CQM)
.one(); // .one();
if (Objects.isNull(position)) { // if (Objects.isNull(position)) {
return Collections.emptyList(); // return Collections.emptyList();
} // }
return lambdaQuery() // return lambdaQuery()
.eq(AdminUser::getIsDel,false) // .eq(AdminUser::getIsDel,false)
.eq(AdminUser::getTitleId, position.getId()) // .eq(AdminUser::getTitleId, position.getId())
.list(); // .list();
} // }
@Transactional @Transactional
@Override @Override

View File

@ -134,8 +134,6 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
@Override @Override
public AppUser addPrimaryAppUser(PrimaryAppUserAddRequest request) { public AppUser addPrimaryAppUser(PrimaryAppUserAddRequest request) {
VUtils.trueThrowBusinessError(lambdaQuery().eq(AppUser::getLoginName, request.getLoginName()).exists())
.throwMessage("登录名已存在");
List<Integer> companyIds = lambdaQuery() List<Integer> companyIds = lambdaQuery()
.select(AppUser::getCompanyId) .select(AppUser::getCompanyId)
.eq(AppUser::getIsPrimary, true) .eq(AppUser::getIsPrimary, true)
@ -154,24 +152,46 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
.map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList()))); .map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList())));
} }
String encodePassword = PASSWORDENCODER.encode(request.getPassword()); String encodePassword = PASSWORDENCODER.encode(request.getPassword());
AppUser user = new AppUser() AppUser user=lambdaQuery().eq(AppUser::getLoginName, request.getLoginName()).one();
.setLoginName(request.getLoginName()) if (Objects.nonNull(user)){
.setName(request.getUserName()) VUtils.trueThrowBusinessError(!user.getIsDel()).throwMessage("登录名已存在");
.setAvatar(request.getAvatar()) user.setIsDel(false)
.setEmail(request.getEmail()) .setName(request.getUserName())
.setPhone(request.getPhone()) .setAvatar(request.getAvatar())
.setAreaId(request.getAreaId()) .setEmail(request.getEmail())
.setTitleId(request.getTitleId()) .setPhone(request.getPhone())
.setPassword(encodePassword) .setAreaId(request.getAreaId())
.setCompanyId(StrUtil.join(",", request.getCompanyIds())) .setTitleId(request.getTitleId())
.setIsPrimary(true) .setPassword(encodePassword)
.setLanguageCode(request.getLanguageCode()) .setCompanyId(StrUtil.join(",", request.getCompanyIds()))
.setSalesUserName(request.getSalesUserName()) .setIsPrimary(true)
.setCreateBy(AdminUserUtil.getUserName()) .setLanguageCode(request.getLanguageCode())
.setCreateTime(LocalDateTime.now()) .setSalesUserName(request.getSalesUserName())
.setState(UserState.ToBeActivated.getState()) .setUpdateBy(AdminUserUtil.getUserName())
.setExpireTime(LocalDateTime.of(LocalDateTime.now().getYear(), 12, 31, 8, 0, 0).toLocalDate()); .setUpdateTime(LocalDateTime.now())
save(user); .setState(UserState.ToBeActivated.getState())
.setExpireTime(LocalDateTime.of(LocalDateTime.now().getYear(), 12, 31, 8, 0, 0).toLocalDate());
updateById(user);
}else {
user = new AppUser()
.setLoginName(request.getLoginName())
.setName(request.getUserName())
.setAvatar(request.getAvatar())
.setEmail(request.getEmail())
.setPhone(request.getPhone())
.setAreaId(request.getAreaId())
.setTitleId(request.getTitleId())
.setPassword(encodePassword)
.setCompanyId(StrUtil.join(",", request.getCompanyIds()))
.setIsPrimary(true)
.setLanguageCode(request.getLanguageCode())
.setSalesUserName(request.getSalesUserName())
.setCreateBy(AdminUserUtil.getUserName())
.setCreateTime(LocalDateTime.now())
.setState(UserState.ToBeActivated.getState())
.setExpireTime(LocalDateTime.of(LocalDateTime.now().getYear(), 12, 31, 8, 0, 0).toLocalDate());
save(user);
}
return user; return user;
} }
@ -296,7 +316,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
@Override @Override
public PageData<AppUserForAdminVO> searchAppUserForAdmin(SearchAppUserForAdminRequest request) { public PageData<AppUserForAdminVO> searchAppUserForAdmin(SearchAppUserForAdminRequest request) {
IPage<AppUser> page = lambdaQuery() Page<AppUser> page = lambdaQuery()
.eq(AppUser::getIsDel, false) .eq(AppUser::getIsDel, false)
.eq(AppUser::getIsPrimary, true) .eq(AppUser::getIsPrimary, true)
.eq(Objects.nonNull(request.getUserState()), AppUser::getState, request.getUserState()) .eq(Objects.nonNull(request.getUserState()), AppUser::getState, request.getUserState())
@ -346,7 +366,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
if (Objects.nonNull(applyFor)) { if (Objects.nonNull(applyFor)) {
vo.setKey("f-" + applyFor.getId()).setId(applyFor.getId()).setState(0); vo.setKey("f-" + applyFor.getId()).setId(applyFor.getId()).setState(0);
} }
return vo; return (Objects.isNull(request.getState()) || Objects.equals(request.getState(), vo.getState()))? vo:null;
}); });
} }

View File

@ -135,6 +135,6 @@ public class DictionaryItemTranslateServiceImpl extends ServiceImpl<DictionaryIt
if (StrUtil.isNotBlank(value) || StrUtil.equals(language,Constant.DEFAULT_LANGUAGE_CODE)) { if (StrUtil.isNotBlank(value) || StrUtil.equals(language,Constant.DEFAULT_LANGUAGE_CODE)) {
return value; return value;
} }
return baseMapper.getValueByCode(dictionaryCode, dictionaryItemCode, language); return baseMapper.getValueByCode(dictionaryCode, dictionaryItemCode, Constant.DEFAULT_LANGUAGE_CODE);
} }
} }

View File

@ -2,9 +2,13 @@ package com.nflg.mobilebroken.repository.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.common.pojo.request.AdminFavoritesRequest; import com.nflg.mobilebroken.common.pojo.request.AdminFavoritesRequest;
import com.nflg.mobilebroken.common.pojo.request.FavoritesMoveRequest;
import com.nflg.mobilebroken.common.pojo.request.FavoritesTicketMoveRequest;
import com.nflg.mobilebroken.common.pojo.request.FavoritesUpdateRequest;
import com.nflg.mobilebroken.common.pojo.vo.FavoritesVO; import com.nflg.mobilebroken.common.pojo.vo.FavoritesVO;
import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.TicketFavorites; import com.nflg.mobilebroken.repository.entity.TicketFavorites;
import com.nflg.mobilebroken.repository.entity.TicketFollow;
import com.nflg.mobilebroken.repository.mapper.TicketFavoritesMapper; import com.nflg.mobilebroken.repository.mapper.TicketFavoritesMapper;
import com.nflg.mobilebroken.repository.service.ITicketFavoritesService; import com.nflg.mobilebroken.repository.service.ITicketFavoritesService;
import com.nflg.mobilebroken.repository.service.ITicketFollowService; import com.nflg.mobilebroken.repository.service.ITicketFollowService;
@ -40,7 +44,7 @@ public class TicketFavoritesServiceImpl extends ServiceImpl<TicketFavoritesMappe
FavoritesVO vo=new FavoritesVO().setId(favorites.getId()).setName(favorites.getName()); FavoritesVO vo=new FavoritesVO().setId(favorites.getId()).setName(favorites.getName());
vo.setChildren(lambdaQuery().eq(TicketFavorites::getParentId,id).eq(TicketFavorites::getCreateBy,userId).list() vo.setChildren(lambdaQuery().eq(TicketFavorites::getParentId,id).eq(TicketFavorites::getCreateBy,userId).list()
.stream().map(f->new FavoritesVO().setId(f.getId()).setName(f.getName())).collect(Collectors.toList())); .stream().map(f->new FavoritesVO().setId(f.getId()).setName(f.getName())).collect(Collectors.toList()));
vo.setTickets(ticketService.getAdminFavorites(id)); vo.setTickets(ticketService.getAdminFavorites(userId,id));
return vo; return vo;
} }
@ -62,4 +66,38 @@ public class TicketFavoritesServiceImpl extends ServiceImpl<TicketFavoritesMappe
lambdaUpdate().eq(TicketFavorites::getId,favoritesId).remove(); lambdaUpdate().eq(TicketFavorites::getId,favoritesId).remove();
} }
} }
@Override
public void updateFavorites(FavoritesUpdateRequest request, Integer userId) {
lambdaUpdate()
.set(TicketFavorites::getName,request.getName())
.eq(TicketFavorites::getId,request.getId())
.eq(TicketFavorites::getCreateBy,userId)
.update();
}
@Override
public void moveFavorites(Integer userId, FavoritesMoveRequest request) {
int orderNum=100000;
if (Objects.nonNull(request.getNextFavoritesId())){
orderNum=lambdaQuery()
.eq(TicketFavorites::getId,request.getNextFavoritesId())
.one().getOrderNum()/2;
}
lambdaUpdate()
.set(TicketFavorites::getOrderNum,orderNum)
.set(TicketFavorites::getParentId,request.getNewParentId())
.eq(TicketFavorites::getId,request.getFavoritesId())
.update();
}
@Override
public void moveFavoritesTicket(Integer userId, FavoritesTicketMoveRequest request) {
ticketFollowService.lambdaUpdate()
.set(TicketFollow::getFavoritesId,request.getFavoritesId())
.eq(TicketFollow::getTicketId,request.getTicketId())
.eq(TicketFollow::getUserId,userId)
.eq(TicketFollow::getFrom,(byte) 1)
.update();
}
} }

View File

@ -97,18 +97,22 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
@Override @Override
public IPage<AdminTicketVO> searchPage(AdminTicketSearchRequest request) { public IPage<AdminTicketVO> searchPage(AdminTicketSearchRequest request) {
if (Objects.nonNull(request.getEndTime())){ if (Objects.nonNull(request.getFavouritesId())){
request.setEndTime(request.getEndTime().plusDays(1)); return baseMapper.searchByFavouritesId(AdminUserUtil.getUserId(),request.getFavouritesId(), new Page<>(request.getPage(), request.getPageSize()));
}else {
if (Objects.nonNull(request.getEndTime())) {
request.setEndTime(request.getEndTime().plusDays(1));
}
if (request.getType() == 2) {
return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize()));
} else if (request.getType() == 4) {
Integer userId = AdminUserUtil.getUserId();
List<Integer> tickerMangagers = adminUserService.getTickerMangagers();
request.setTicketManager(tickerMangagers.stream().anyMatch(uid -> Objects.equals(uid, userId)));
return baseMapper.searchFromAdmin(request, userId, new Page<>(request.getPage(), request.getPageSize()));
}
return new Page<>(request.getPage(), request.getPageSize(), 0);
} }
if (request.getType() == 2) {
return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize()));
} else if (request.getType() == 4) {
Integer userId=AdminUserUtil.getUserId();
List<Integer> tickerMangagers=adminUserService.getTickerMangagers();
request.setTicketManager(tickerMangagers.stream().anyMatch(uid -> Objects.equals(uid, userId)));
return baseMapper.searchFromAdmin(request, userId, new Page<>(request.getPage(), request.getPageSize()));
}
return new Page<>(request.getPage(), request.getPageSize(), 0);
} }
@Override @Override
@ -304,7 +308,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
} }
@Override @Override
public List<TicketVO> getAdminFavorites(Integer favoritesId) { public List<TicketVO> getAdminFavorites(Integer userId,Integer favoritesId) {
return baseMapper.getAdminFavorites(favoritesId); return baseMapper.getAdminFavorites(userId,favoritesId);
} }
} }

View File

@ -175,7 +175,7 @@
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName' SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName'
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType'
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',auc.user_name AS 'cqm' ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',true AS 'followed',auc.user_name AS 'cqm'
,t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle' ,t.handle_name AS 'handle'
FROM ticket t FROM ticket t
@ -196,7 +196,7 @@
<select id="searchAllFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO"> <select id="searchAllFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName' SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName'
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',IF(tf.id IS NULL, false, true) AS 'followed' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',true AS 'followed'
,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle' ,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle'
,dt.cqm_person_name AS 'cqms',t.handle_name AS 'handle' ,dt.cqm_person_name AS 'cqms',t.handle_name AS 'handle'
FROM ticket t FROM ticket t
@ -218,6 +218,27 @@
SELECT t.id,t.no,t.title SELECT t.id,t.no,t.title
FROM ticket_follow tf FROM ticket_follow tf
INNER JOIN ticket t ON tf.ticket_id=t.id INNER JOIN ticket t ON tf.ticket_id=t.id
WHERE tf.`from`=1 AND tf.favorites_id=#{favoritesId} WHERE tf.`from`=1 AND tf.user_id=#{userId} AND tf.favorites_id=#{favoritesId}
</select>
<select id="searchByFavouritesId" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName'
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType'
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',true AS 'followed',auc.user_name AS 'cqm'
,t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle'
FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN t_base_customer c ON u.company_id=c.id
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
LEFT JOIN app_area a2 ON u.area_id=a2.id
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1 AND tf.favorites_id=#{favouritesId}
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
LEFT JOIN admin_user auc ON t.cqm=auc.id
LEFT JOIN admin_user auh ON t.current_handle=auh.id
ORDER BY t.id DESC
</select> </select>
</mapper> </mapper>