Compare commits

...

6 Commits

Author SHA1 Message Date
曹鹏飞 8660fcd715 feat: bug-528 app端添加管理功能
1、根据菜单url查询菜单下的所有按钮列表
2、查询所有收藏夹信息,树形结构
2025-08-05 09:52:31 +08:00
曹鹏飞 5b9b277251 feat: bug-528 app端添加管理功能 2025-07-30 14:10:02 +08:00
曹鹏飞 9e911460b0 feat: bug-528 app端添加管理功能 2025-07-30 12:13:12 +08:00
曹鹏飞 ad50d8cc15 feat: bug-528 app端添加管理功能 2025-07-30 11:54:47 +08:00
曹鹏飞 5b74e604ab feat: bug-528 app端添加管理功能 2025-07-29 11:05:24 +08:00
曹鹏飞 63e1581a5e feat: bug-528 app端添加管理功能 2025-07-29 10:01:47 +08:00
16 changed files with 149 additions and 52 deletions

View File

@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -175,6 +176,16 @@ public class MenuController extends ControllerBase {
return ApiResult.success(); return ApiResult.success();
} }
/**
* 根据菜单url获取菜单按钮列表
* @param url 请求url
* @return 菜单按钮列表
*/
@GetMapping("getMenuButtonList")
public ApiResult<List<AdminMenuButtonVO>> getMenuButtonList(@Valid @RequestParam @NotBlank String url) {
return ApiResult.success(adminMenuButtonService.getMenuButtonList(url));
}
/** /**
* 获取所有接口 * 获取所有接口
* @return 接口列表 * @return 接口列表

View File

@ -154,7 +154,17 @@ public class TicketController extends ControllerBase {
@GetMapping("getFavorites") @GetMapping("getFavorites")
@ApiMark(moduleName = "工单管理", apiName = "获取收藏夹",isPublic = true) @ApiMark(moduleName = "工单管理", apiName = "获取收藏夹",isPublic = true)
public ApiResult<FavoritesVO> getFavorites(@RequestParam(defaultValue ="0") Integer id){ public ApiResult<FavoritesVO> getFavorites(@RequestParam(defaultValue ="0") Integer id){
return ApiResult.success(ticketFavoritesService.getList(AdminUserUtil.getUserId(),AppUserUtil.getFrom(),id)); return ApiResult.success(ticketFavoritesService.getList(AdminUserUtil.getUserId(),Constant.FROM_ADMIN,id));
}
/**
* 获取收藏夹树结构
* @param id 父级id0为根节点
* @return 树结构
*/
@GetMapping("getFavoritesTree")
public ApiResult<FavoritesVO> getFavoritesTree(@RequestParam(defaultValue ="0") Integer id){
return ApiResult.success(ticketFavoritesService.getTree(AdminUserUtil.getUserId(),Constant.FROM_ADMIN,id));
} }
/** /**
@ -165,7 +175,7 @@ public class TicketController extends ControllerBase {
@PostMapping("addFavorites") @PostMapping("addFavorites")
@ApiMark(moduleName = "工单管理", apiName = "添加收藏夹",isPublic = true) @ApiMark(moduleName = "工单管理", apiName = "添加收藏夹",isPublic = true)
public ApiResult<Void> addFavorites(@Valid @RequestBody AdminFavoritesRequest request){ public ApiResult<Void> addFavorites(@Valid @RequestBody AdminFavoritesRequest request){
ticketFavoritesService.addFavorites(request,AdminUserUtil.getUserId(),AppUserUtil.getFrom()); ticketFavoritesService.addFavorites(request,AdminUserUtil.getUserId(),Constant.FROM_ADMIN);
return ApiResult.success(); return ApiResult.success();
} }
@ -175,7 +185,7 @@ public class TicketController extends ControllerBase {
*/ */
@PostMapping("updateFavorites") @PostMapping("updateFavorites")
public ApiResult<Void> updateFavorites(@Valid @RequestBody FavoritesUpdateRequest request){ public ApiResult<Void> updateFavorites(@Valid @RequestBody FavoritesUpdateRequest request){
ticketFavoritesService.updateFavorites(request,AdminUserUtil.getUserId(),AppUserUtil.getFrom()); ticketFavoritesService.updateFavorites(request,AdminUserUtil.getUserId(),Constant.FROM_ADMIN);
return ApiResult.success(); return ApiResult.success();
} }
@ -187,7 +197,7 @@ public class TicketController extends ControllerBase {
@PostMapping("deleteFavorites") @PostMapping("deleteFavorites")
@ApiMark(moduleName = "工单管理", apiName = "删除收藏夹",isPublic = true) @ApiMark(moduleName = "工单管理", apiName = "删除收藏夹",isPublic = true)
public ApiResult<Void> deleteFavorites(@Valid @RequestParam @NotNull Integer favoritesId){ public ApiResult<Void> deleteFavorites(@Valid @RequestParam @NotNull Integer favoritesId){
ticketFavoritesService.deleteFavorites(AdminUserUtil.getUserId(),AppUserUtil.getFrom(),favoritesId); ticketFavoritesService.deleteFavorites(AdminUserUtil.getUserId(),Constant.FROM_ADMIN,favoritesId);
return ApiResult.success(); return ApiResult.success();
} }
@ -207,7 +217,7 @@ public class TicketController extends ControllerBase {
*/ */
@PostMapping("moveFavoritesTicket") @PostMapping("moveFavoritesTicket")
public ApiResult<Void> moveFavoritesTicket(@Valid @RequestBody FavoritesTicketMoveRequest request){ public ApiResult<Void> moveFavoritesTicket(@Valid @RequestBody FavoritesTicketMoveRequest request){
ticketFavoritesService.moveFavoritesTicket(AdminUserUtil.getUserId(),AppUserUtil.getFrom(),request); ticketFavoritesService.moveFavoritesTicket(AdminUserUtil.getUserId(),Constant.FROM_ADMIN,request);
return ApiResult.success(); return ApiResult.success();
} }
@ -218,7 +228,7 @@ public class TicketController extends ControllerBase {
@PostMapping("followTiket") @PostMapping("followTiket")
@ApiMark(moduleName = "工单管理", apiName = "关注工单") @ApiMark(moduleName = "工单管理", apiName = "关注工单")
public ApiResult<Void> followTiket(@Valid @RequestBody AdminFollowRequest request){ public ApiResult<Void> followTiket(@Valid @RequestBody AdminFollowRequest request){
ticketFollowService.follow(request, AdminUserUtil.getUserId(),AppUserUtil.getFrom()); ticketFollowService.follow(request, AdminUserUtil.getUserId(),Constant.FROM_ADMIN);
return ApiResult.success(); return ApiResult.success();
} }
@ -228,7 +238,7 @@ public class TicketController extends ControllerBase {
**/ **/
@PostMapping("unfollowTicket") @PostMapping("unfollowTicket")
public ApiResult<Void> unfollowTicket(@Valid @RequestParam @NotNull Integer ticketId){ public ApiResult<Void> unfollowTicket(@Valid @RequestParam @NotNull Integer ticketId){
ticketFollowService.unfollow(AdminUserUtil.getUserId(),AppUserUtil.getFrom(),ticketId); ticketFollowService.unfollow(AdminUserUtil.getUserId(),Constant.FROM_ADMIN,ticketId);
return ApiResult.success(); return ApiResult.success();
} }

View File

@ -9,15 +9,11 @@ import com.nflg.mobilebroken.common.constant.UserState;
import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.vo.AppLoginVO; import com.nflg.mobilebroken.common.pojo.vo.AppLoginVO;
import com.nflg.mobilebroken.common.pojo.vo.MenuVO; import com.nflg.mobilebroken.common.pojo.vo.MenuVO;
import com.nflg.mobilebroken.common.util.AppUserUtil; import com.nflg.mobilebroken.common.pojo.vo.RoleVO;
import com.nflg.mobilebroken.common.util.SaTokenAppUtil; import com.nflg.mobilebroken.common.util.*;
import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.entity.AdminUser;
import com.nflg.mobilebroken.repository.entity.AppUser; import com.nflg.mobilebroken.repository.entity.AppUser;
import com.nflg.mobilebroken.repository.service.IAdminRoleService; import com.nflg.mobilebroken.repository.service.*;
import com.nflg.mobilebroken.repository.service.IAdminUserService;
import com.nflg.mobilebroken.repository.service.IAppUserService;
import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -49,6 +45,10 @@ public class AppController extends ControllerBase {
@Resource @Resource
private IAdminRoleService adminRoleService; private IAdminRoleService adminRoleService;
@Resource
private IAdminUserRoleMapService adminUserRoleMapService;
/** /**
* 用户端登录 * 用户端登录
* @param userName 用户名 * @param userName 用户名
@ -57,8 +57,34 @@ public class AppController extends ControllerBase {
*/ */
@GetMapping("login") @GetMapping("login")
public ApiResult<AppLoginVO> login(String userName, String password) { public ApiResult<AppLoginVO> login(String userName, String password) {
AdminUser adminUser =adminUserService.getUser(userName,password);
if (Objects.nonNull(adminUser)){
VUtils.trueThrow(Objects.equals(adminUser.getState(), UserState.Disabled.getState()))
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_DISABLED, MultilingualUtil.getLanguage()));
VUtils.trueThrow(Objects.equals(adminUser.getState(), UserState.ToBeActivated.getState()))
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED, MultilingualUtil.getLanguage()));
List<RoleVO> roleCodes = adminUserRoleMapService.getRoleList(adminUser.getId());
SaTokenAdminUtil.login(adminUser.getId(), SaLoginConfig
.setExtra("from", Constant.FROM_ADMIN)
.setExtra("name", adminUser.getUserName())
.setExtra("code", adminUser.getUserCode())
.setExtra("email", adminUser.getEmail())
.setExtra("roles", roleCodes.stream().map(RoleVO::getCode).collect(Collectors.toList())));
String adminToken=SaTokenAdminUtil.getTokenInfo().getTokenValue();
SaTokenAppUtil.login(adminUser.getId(), SaLoginConfig
.setExtra("from", Constant.FROM_ADMIN)
.setExtra("name", adminUser.getUserName())
.setExtra("email", adminUser.getEmail()));
SaTokenInfo tokenInfo = SaTokenAppUtil.getTokenInfo();
return ApiResult.success(new AppLoginVO()
.setUserId(adminUser.getId())
.setToken(tokenInfo.getTokenValue())
.setAdminToken(adminToken)
.setExpire(tokenInfo.getTokenTimeout())
.setLanguageCode(Constant.DEFAULT_LANGUAGE_CODE)
.setPlatform(Constant.FROM_ADMIN));
}else {
AppUser user=appUserService.getUser(userName,password); AppUser user=appUserService.getUser(userName,password);
if (Objects.nonNull(user)) {
VUtils.trueThrow(Objects.equals(user.getState(), UserState.Disabled.getState())) VUtils.trueThrow(Objects.equals(user.getState(), UserState.Disabled.getState()))
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_DISABLED, user.getLanguageCode())); .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_DISABLED, user.getLanguageCode()));
VUtils.trueThrow(Objects.equals(user.getState(), UserState.ToBeActivated.getState())) VUtils.trueThrow(Objects.equals(user.getState(), UserState.ToBeActivated.getState()))
@ -68,7 +94,7 @@ public class AppController extends ControllerBase {
VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now())) && !user.getIsPrimary()) VUtils.trueThrow(user.getExpireTime().isBefore(ChronoLocalDate.from(LocalDateTime.now())) && !user.getIsPrimary())
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED, user.getLanguageCode())); .throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED, user.getLanguageCode()));
SaTokenAppUtil.login(user.getId(), SaLoginConfig SaTokenAppUtil.login(user.getId(), SaLoginConfig
.setExtra("from", "app") .setExtra("from", Constant.FROM_APP)
.setExtra("name", user.getName()) .setExtra("name", user.getName())
.setExtra("email", user.getEmail()) .setExtra("email", user.getEmail())
.setExtra("companyIds", StrUtil.split(user.getCompanyId(), ",").stream().map(Integer::valueOf).collect(Collectors.toList())) .setExtra("companyIds", StrUtil.split(user.getCompanyId(), ",").stream().map(Integer::valueOf).collect(Collectors.toList()))
@ -81,26 +107,7 @@ public class AppController extends ControllerBase {
.setToken(tokenInfo.getTokenValue()) .setToken(tokenInfo.getTokenValue())
.setExpire(tokenInfo.getTokenTimeout()) .setExpire(tokenInfo.getTokenTimeout())
.setLanguageCode(user.getLanguageCode()) .setLanguageCode(user.getLanguageCode())
.setPlatform("app")); .setPlatform(Constant.FROM_APP));
}else {
AdminUser adminUser =adminUserService.getUser(userName,password);
VUtils.trueThrow(Objects.isNull(adminUser))
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_INCORRECTUSERNAMEORPASSWORD, Constant.DEFAULT_LANGUAGE_CODE));
VUtils.trueThrow(Objects.equals(adminUser.getState(), UserState.Disabled.getState()))
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_DISABLED, Constant.DEFAULT_LANGUAGE_CODE));
VUtils.trueThrow(Objects.equals(adminUser.getState(), UserState.ToBeActivated.getState()))
.throwMessage(STATE.PassportErr, dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_ACCOUNT_HAS_EXPIRED, Constant.DEFAULT_LANGUAGE_CODE));
SaTokenAppUtil.login(adminUser.getId(), SaLoginConfig
.setExtra("from", "admin")
.setExtra("name", adminUser.getUserName())
.setExtra("email", adminUser.getEmail()));
SaTokenInfo tokenInfo = SaTokenAppUtil.getTokenInfo();
return ApiResult.success(new AppLoginVO()
.setUserId(adminUser.getId())
.setToken(tokenInfo.getTokenValue())
.setExpire(tokenInfo.getTokenTimeout())
.setLanguageCode(Constant.DEFAULT_LANGUAGE_CODE)
.setPlatform("admin"));
} }
} }

View File

@ -15,6 +15,9 @@ public class SearchDeviceRequest extends PageRequest {
// 设备型号 // 设备型号
private String modelNo; private String modelNo;
// 设备编号或设备型号
private String key;
//开始时间 //开始时间
private LocalDate startTime; private LocalDate startTime;

View File

@ -209,4 +209,10 @@ public class AdminTicketVO {
} }
return null; return null;
} }
/**
* 问题描述
*/
@IgnoreExport
private String description;
} }

View File

@ -11,6 +11,11 @@ public class AppLoginVO {
private String token; private String token;
/**
* 管理员端token
*/
private String adminToken;
private Long expire; private Long expire;
//语言编码 //语言编码

View File

@ -1,8 +1,11 @@
package com.nflg.mobilebroken.repository.mapper; package com.nflg.mobilebroken.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.mobilebroken.common.pojo.vo.AdminMenuButtonVO;
import com.nflg.mobilebroken.repository.entity.AdminMenuButton; import com.nflg.mobilebroken.repository.entity.AdminMenuButton;
import java.util.List;
/** /**
* <p> * <p>
* Mapper 接口 * Mapper 接口
@ -13,4 +16,5 @@ import com.nflg.mobilebroken.repository.entity.AdminMenuButton;
*/ */
public interface AdminMenuButtonMapper extends BaseMapper<AdminMenuButton> { public interface AdminMenuButtonMapper extends BaseMapper<AdminMenuButton> {
List<AdminMenuButtonVO> getMenuButtonList(String url);
} }

View File

@ -8,6 +8,8 @@ import com.nflg.mobilebroken.common.pojo.request.SearchMenuButtonRequest;
import com.nflg.mobilebroken.common.pojo.vo.AdminMenuButtonVO; import com.nflg.mobilebroken.common.pojo.vo.AdminMenuButtonVO;
import com.nflg.mobilebroken.repository.entity.AdminMenuButton; import com.nflg.mobilebroken.repository.entity.AdminMenuButton;
import java.util.List;
/** /**
* <p> * <p>
* 服务类 * 服务类
@ -23,4 +25,6 @@ public interface IAdminMenuButtonService extends IService<AdminMenuButton> {
void addMenuButton(MenuButtonAddRequest request); void addMenuButton(MenuButtonAddRequest request);
void updateMenuButton(MenuButtonUpdateRequest request); void updateMenuButton(MenuButtonUpdateRequest request);
List<AdminMenuButtonVO> getMenuButtonList(String url);
} }

View File

@ -29,4 +29,6 @@ public interface ITicketFavoritesService extends IService<TicketFavorites> {
void moveFavorites(FavoritesMoveRequest request); void moveFavorites(FavoritesMoveRequest request);
void moveFavoritesTicket(Integer userId,String from, FavoritesTicketMoveRequest request); void moveFavoritesTicket(Integer userId,String from, FavoritesTicketMoveRequest request);
FavoritesVO getTree(Integer userId, String from, Integer id);
} }

View File

@ -18,6 +18,7 @@ import com.nflg.mobilebroken.repository.service.IAdminMenuButtonService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects; import java.util.Objects;
/** /**
@ -68,4 +69,9 @@ public class AdminMenuButtonServiceImpl extends ServiceImpl<AdminMenuButtonMappe
.setUpdateTime(LocalDateTime.now()); .setUpdateTime(LocalDateTime.now());
updateById(button); updateById(button);
} }
@Override
public List<AdminMenuButtonVO> getMenuButtonList(String url) {
return baseMapper.getMenuButtonList(url);
}
} }

View File

@ -17,6 +17,7 @@ import com.nflg.mobilebroken.common.pojo.vo.AdminUserSimpleVO;
import com.nflg.mobilebroken.common.pojo.vo.AdminUserVO; import com.nflg.mobilebroken.common.pojo.vo.AdminUserVO;
import com.nflg.mobilebroken.common.pojo.vo.RoleSimpleVO; import com.nflg.mobilebroken.common.pojo.vo.RoleSimpleVO;
import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.MultilingualUtil;
import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.*; import com.nflg.mobilebroken.repository.entity.*;
import com.nflg.mobilebroken.repository.mapper.AdminUserMapper; import com.nflg.mobilebroken.repository.mapper.AdminUserMapper;
@ -64,16 +65,23 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
@Resource @Resource
private ITBaseDeviceTypeService deviceTypeService; private ITBaseDeviceTypeService deviceTypeService;
@Resource
private IDictionaryItemTranslateService dictionaryItemTranslateService;
@Override @Override
public AdminUser getUser(String userName, String password) { public AdminUser getUser(String userName, String password) {
AdminUser user = lambdaQuery() AdminUser user = lambdaQuery()
.eq(AdminUser::getLoginName, userName) .eq(AdminUser::getLoginName, userName)
.one(); .one();
if (Objects.nonNull(user) && PASSWORDENCODER.matches(password, user.getPassword())) { if (Objects.isNull(user)) return null;
if (PASSWORDENCODER.matches(password, user.getPassword())) {
return user; return user;
} }else {
VUtils.trueThrowBusinessError(true)
.throwMessage(dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_INCORRECTUSERNAMEORPASSWORD, MultilingualUtil.getLanguage()));
return null; return null;
} }
}
@Override @Override
public AdminUser add(AccountAddRequest request) { public AdminUser add(AccountAddRequest request) {

View File

@ -11,10 +11,7 @@ import com.nflg.mobilebroken.common.exception.NflgException;
import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.request.*; import com.nflg.mobilebroken.common.pojo.request.*;
import com.nflg.mobilebroken.common.pojo.vo.*; import com.nflg.mobilebroken.common.pojo.vo.*;
import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.*;
import com.nflg.mobilebroken.common.util.AppUserUtil;
import com.nflg.mobilebroken.common.util.PageUtil;
import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.*; import com.nflg.mobilebroken.repository.entity.*;
import com.nflg.mobilebroken.repository.mapper.AppUserMapper; import com.nflg.mobilebroken.repository.mapper.AppUserMapper;
import com.nflg.mobilebroken.repository.service.*; import com.nflg.mobilebroken.repository.service.*;
@ -69,17 +66,19 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
@Resource @Resource
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
@Resource
private IDictionaryItemTranslateService dictionaryItemTranslateService;
@Override @Override
public AppUser getUser(String userName, String password) { public AppUser getUser(String userName, String password) {
AppUser user = lambdaQuery() AppUser user = lambdaQuery()
.eq(AppUser::getIsDel, false) .eq(AppUser::getIsDel, false)
.eq(AppUser::getLoginName, userName) .eq(AppUser::getLoginName, userName)
.one(); .one();
if (Objects.nonNull(user) && PASSWORDENCODER.matches(password, user.getPassword())) { VUtils.trueThrowBusinessError(Objects.isNull(user) || !PASSWORDENCODER.matches(password, user.getPassword()))
.throwMessage(dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_SYSTEMERROR, Constant.DICTIONARY_ITEM_INCORRECTUSERNAMEORPASSWORD, MultilingualUtil.getLanguage()));
return user; return user;
} }
return null;
}
@Override @Override
public void disable(Integer id) { public void disable(Integer id) {

View File

@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -102,4 +103,26 @@ public class TicketFavoritesServiceImpl extends ServiceImpl<TicketFavoritesMappe
.eq(TicketFollow::getFrom, StrUtil.equals(from, "app")?0:1) .eq(TicketFollow::getFrom, StrUtil.equals(from, "app")?0:1)
.update(); .update();
} }
@Override
public FavoritesVO getTree(Integer userId, String from, Integer id) {
TicketFavorites favorites = Objects.equals(id, 0) ? new TicketFavorites().setId(0).setName("收藏夹") : lambdaQuery().eq(TicketFavorites::getId, id).one();
FavoritesVO vo = new FavoritesVO().setId(favorites.getId()).setName(favorites.getName());
getChildren(userId, vo, from);
return vo;
}
private void getChildren(Integer userId, FavoritesVO vo, String from) {
List<FavoritesVO> favorites = lambdaQuery()
.eq(TicketFavorites::getParentId, vo.getId())
.eq(TicketFavorites::getUserPlatform, from)
.eq(TicketFavorites::getCreateBy, userId)
.orderByAsc(TicketFavorites::getOrderNum)
.list()
.stream()
.map(f -> new FavoritesVO().setId(f.getId()).setName(f.getName()))
.collect(Collectors.toList());
vo.setChildren(favorites);
favorites.forEach(f -> getChildren(userId, f, from));
}
} }

View File

@ -2,4 +2,10 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.mobilebroken.repository.mapper.AdminMenuButtonMapper"> <mapper namespace="com.nflg.mobilebroken.repository.mapper.AdminMenuButtonMapper">
<select id="getMenuButtonList" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminMenuButtonVO">
SELECT amb.*
FROM admin_menu am
INNER JOIN admin_menu_button amb ON am.id=amb.menu_id
WHERE am.url=#{url}
</select>
</mapper> </mapper>

View File

@ -86,6 +86,9 @@
<if test="request.endTime!=null and request.endTime!=''"> <if test="request.endTime!=null and request.endTime!=''">
and d.shipment_date &lt;= #{request.endTime} and d.shipment_date &lt;= #{request.endTime}
</if> </if>
<if test="request.key!=null and request.key!=''">
and (d.device_no LIKE concat('%', #{request.key}, '%') or d.model_no LIKE concat('%', #{request.key}, '%'))
</if>
</select> </select>
<!--定时任务-质保未开始--> <!--定时任务-质保未开始-->
<update id="taskWarrantyStateNotStarted"> <update id="taskWarrantyStateNotStarted">

View File

@ -150,7 +150,7 @@
,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',IF(tf.id IS NULL, false, true) AS 'followed',auc.user_name AS 'cqm'
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle' ,t.handle_name AS 'handle',t.description
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN admin_user au ON t.user_id=au.id LEFT JOIN admin_user au ON t.user_id=au.id
@ -173,7 +173,7 @@
,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',IF(tf.id IS NULL, false, true) AS 'followed',auc.user_name AS 'cqm'
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle' ,t.handle_name AS 'handle',t.description
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN admin_user au ON t.user_id=au.id LEFT JOIN admin_user au ON t.user_id=au.id
@ -196,7 +196,7 @@
,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',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',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle' ,t.handle_name AS 'handle',t.description
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN admin_user au ON t.user_id=au.id LEFT JOIN admin_user au ON t.user_id=au.id
@ -218,7 +218,7 @@
,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,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',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',auh.user_name AS 'currentHandle' ,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',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',t.description
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN admin_user au ON t.user_id=au.id LEFT JOIN admin_user au ON t.user_id=au.id
@ -251,7 +251,7 @@
,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',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',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms' ,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle' ,t.handle_name AS 'handle',t.description
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN admin_user au ON t.user_id=au.id LEFT JOIN admin_user au ON t.user_id=au.id