feat: 一些调整

This commit is contained in:
曹鹏飞 2025-02-06 17:51:47 +08:00
parent a7487dcafa
commit 2c85fcff65
14 changed files with 117 additions and 37 deletions

View File

@ -163,16 +163,16 @@ public class AppUserController extends ControllerBase {
return ApiResult.success(appUserService.searchAppUserForAdmin(request)); return ApiResult.success(appUserService.searchAppUserForAdmin(request));
} }
/** // /**
* 获取代理商子账号列表 // * 获取代理商子账号列表
* // *
* @param id 主账号id // * @param id 主账号id
*/ // */
@GetMapping("getChildrenOfAppUser") // @GetMapping("getChildrenOfAppUser")
@MethodInfoMark(value = "获取代理商子账号列表", menuName = "代理商管理") // @MethodInfoMark(value = "获取代理商子账号列表", menuName = "代理商管理")
public ApiResult<List<AppUserForAdminVO>> getChildrenOfAppUser(@Valid @RequestParam Integer id) { // public ApiResult<List<AppUserForAdminVO>> getChildrenOfAppUser(@Valid @RequestParam Integer id) {
return ApiResult.success(appUserService.getChildrenOfAppUser(id)); // return ApiResult.success(appUserService.getChildrenOfAppUser(id));
} // }
/** /**
* 启用/禁用代理商 * 启用/禁用代理商

View File

@ -22,7 +22,6 @@ import java.time.Instant;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -43,8 +42,10 @@ public class TiketController extends ControllerBase {
@Resource @Resource
private ITicketFollowService ticketFollowService; private ITicketFollowService ticketFollowService;
// @Resource
// private ITicketChatService ticketChatService;
@Resource @Resource
private ITicketChatService ticketChatService; private TicketChatService ticketChatService;
@Resource @Resource
private IAppUserService appUserService; private IAppUserService appUserService;
@ -107,6 +108,14 @@ public class TiketController extends ControllerBase {
@PostMapping("/addTiket") @PostMapping("/addTiket")
public ApiResult<Void> addTiket(@Valid @RequestBody TicketAddRequest request) { public ApiResult<Void> addTiket(@Valid @RequestBody TicketAddRequest request) {
Integer ticketId = ticketService.add(request, AppUserUtil.getUserId()); Integer ticketId = ticketService.add(request, AppUserUtil.getUserId());
ticketChatService.add(new TicketChat()
.setTicketId(ticketId)
.setMessages(Collections.singletonList(new ChatMessageVO()
.setFrom("system")
.setSenderId(0)
.setSenderName("服务助手")
.setCreateTime(Instant.now())
.setContent("<b>正在为您分派工程师,请稍后</b><br/>工程师将尽快回复您,如需补充信息,请继续留言。"))));
adminMessageService.addCQMNotify(ticketId); adminMessageService.addCQMNotify(ticketId);
return ApiResult.success(); return ApiResult.success();
} }
@ -171,11 +180,7 @@ public class TiketController extends ControllerBase {
**/ **/
@GetMapping("getChatMessages") @GetMapping("getChatMessages")
public ApiResult<List<ChatMessageVO>> getChatMessages(@Valid @RequestParam @NotNull Integer ticketId) { public ApiResult<List<ChatMessageVO>> getChatMessages(@Valid @RequestParam @NotNull Integer ticketId) {
TicketChat ticketChat=ticketChatService.findByTicketId(ticketId); return ApiResult.success(ticketChatService.getMessages(ticketId));
if (Objects.isNull(ticketChat)){
return ApiResult.success(Collections.emptyList());
}
return ApiResult.success(ticketChat.getMessages());
} }
/** /**
@ -185,11 +190,17 @@ public class TiketController extends ControllerBase {
@PostMapping("addChatMessage") @PostMapping("addChatMessage")
public ApiResult<Void> addChatMessage(@Valid @RequestBody AddChatMessageRequest request){ public ApiResult<Void> addChatMessage(@Valid @RequestBody AddChatMessageRequest request){
ChatMessageVO message = new ChatMessageVO() ChatMessageVO message = new ChatMessageVO()
.setSenderId(Integer.toString(AppUserUtil.getUserId())) .setFrom("app")
.setSenderId(AppUserUtil.getUserId())
.setSenderName(AppUserUtil.getUserName())
.setContent(request.getContent()) .setContent(request.getContent())
.setCreateTime(Instant.now()) .setCreateTime(Instant.now())
.setAttachments(request.getAttachments()); .setAttachments(request.getAttachments());
ticketChatService.pushMessage(request.getTicketId(),message); // ticketChatService.pushMessage(request.getTicketId(),message);
// TicketChat chat=ticketChatService.findByTicketId(request.getTicketId());
// chat.getMessages().add(message);
// ticketChatService.save(chat);
ticketChatService.addMessage(request.getTicketId(), message);
return ApiResult.success(); return ApiResult.success();
} }

View File

@ -2,31 +2,41 @@ package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data @Data
public class AccountAddRequest { public class AccountAddRequest {
//登录名称 //登录名称
@NotBlank
private String loginName; private String loginName;
//用户名 //用户名
@NotBlank
private String userName; private String userName;
//手机号码 //手机号码
private String phone; private String phone;
//邮箱 //邮箱
@NotBlank
private String email; private String email;
//部门id //部门id
@NotNull
private Integer departmentId; private Integer departmentId;
//职位id //职位id
@NotNull
private Integer titleId; private Integer titleId;
//用户号 //用户号
@NotBlank
private String userCode; private String userCode;
//是否启用 //是否启用
@NotNull
private Boolean enabled; private Boolean enabled;
//头像 //头像

View File

@ -34,5 +34,5 @@ public class MenuAddRequest {
// 是否显示 // 是否显示
@NotNull @NotNull
private boolean isShow; private boolean show;
} }

View File

@ -5,6 +5,7 @@ import lombok.experimental.Accessors;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@ -63,4 +64,7 @@ public class AppUserForAdminVO {
//是否主账号 //是否主账号
private boolean isPrimary; private boolean isPrimary;
//下级账号
private List<AppUserForAdminVO> children;
} }

View File

@ -10,8 +10,11 @@ import java.util.List;
@Accessors(chain = true) @Accessors(chain = true)
public class ChatMessageVO { public class ChatMessageVO {
//来源
private String from;
// 发送者id // 发送者id
private String senderId; private Integer senderId;
// 发送者名称 // 发送者名称
private String senderName; private String senderName;

View File

@ -27,7 +27,7 @@ public class MenuVO {
private boolean enable; private boolean enable;
// 是否显示 // 是否显示
private boolean isShow; private boolean show;
// 创建人 // 创建人
private String createBy; private String createBy;

View File

@ -1,14 +1,16 @@
package com.nflg.mobilebroken.repository.entity; package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 后台-菜单 * 后台-菜单
@ -56,7 +58,8 @@ public class AdminMenu implements Serializable {
/** /**
* 是否显示 * 是否显示
*/ */
private Boolean isShow; @TableField(value = "`show`")
private Boolean show;
/** /**
* 排序 * 排序

View File

@ -2,6 +2,7 @@ package com.nflg.mobilebroken.repository.entity;
import com.nflg.mobilebroken.common.pojo.vo.ChatMessageVO; import com.nflg.mobilebroken.common.pojo.vo.ChatMessageVO;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
@ -9,6 +10,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@Data @Data
@Accessors(chain = true)
@Document(collection = "TicketChat") @Document(collection = "TicketChat")
public class TicketChat { public class TicketChat {

View File

@ -0,0 +1,44 @@
package com.nflg.mobilebroken.repository.service;
import com.nflg.mobilebroken.common.pojo.vo.ChatMessageVO;
import com.nflg.mobilebroken.repository.entity.TicketChat;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@Service
public class TicketChatService {
@Resource
private MongoTemplate mongoTemplate;
public void add(TicketChat ticketChat) {
mongoTemplate.save(ticketChat);
}
public List<ChatMessageVO> getMessages(Integer ticketId) {
Query query = new Query(Criteria.where("ticketId").is(ticketId));
TicketChat ticketChat = mongoTemplate.findOne(query, TicketChat.class);
if (Objects.isNull(ticketChat)) {
return Collections.emptyList();
} else {
return ticketChat.getMessages();
}
}
public void addMessage(Integer ticketId, ChatMessageVO newMessage) {
// 创建查询条件查找 ticketId = ticketId TicketChat
Query query = new Query(Criteria.where("ticketId").is(ticketId));
// 创建更新操作 messages 列表中添加新消息
Update update = new Update().push("messages", newMessage);
// 执行更新操作
mongoTemplate.findAndModify(query, update, TicketChat.class);
}
}

View File

@ -71,7 +71,7 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
.setUrl(request.getUrl()) .setUrl(request.getUrl())
.setSort(request.getSort()) .setSort(request.getSort())
.setEnable(request.isEnable()) .setEnable(request.isEnable())
.setIsShow(request.isShow()) .setShow(request.isShow())
.setParentId(request.getParentId()) .setParentId(request.getParentId())
.setCreateBy(AdminUserUtil.getUserName()) .setCreateBy(AdminUserUtil.getUserName())
.setCreateTime(LocalDateTime.now()); .setCreateTime(LocalDateTime.now());
@ -87,7 +87,7 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
.setUrl(request.getUrl()) .setUrl(request.getUrl())
.setSort(request.getSort()) .setSort(request.getSort())
.setEnable(request.isEnable()) .setEnable(request.isEnable())
.setIsShow(request.isShow()) .setShow(request.isShow())
.setParentId(request.getParentId()) .setParentId(request.getParentId())
.setUpdateBy(AdminUserUtil.getUserName()) .setUpdateBy(AdminUserUtil.getUserName())
.setUpdateTime(LocalDateTime.now()); .setUpdateTime(LocalDateTime.now());

View File

@ -31,6 +31,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.time.chrono.ChronoLocalDate; import java.time.chrono.ChronoLocalDate;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -178,25 +179,27 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
if (Objects.nonNull(d.getUpdateBy())) { if (Objects.nonNull(d.getUpdateBy())) {
updateBy = getById(d.getUpdateBy()).getName(); updateBy = getById(d.getUpdateBy()).getName();
} }
List<Integer> companyIds = Arrays.stream(d.getCompanyId().split(",")).filter(StrUtil::isNotBlank).map(Integer::valueOf).collect(Collectors.toList());
List<String> customers = customerService.listByIds(companyIds).stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList());
return new AppUserForAdminVO() return new AppUserForAdminVO()
.setId(d.getId()) .setId(d.getId())
.setAvatar(d.getAvatar()) .setAvatar(d.getAvatar())
.setLoginName(d.getLoginName()) .setLoginName(d.getLoginName())
.setUserName(d.getName()) .setUserName(d.getName())
.setCompanyName(d.getCompanyId()) .setCompanyName(StrUtil.join(",", customers))
.setName(d.getSalesUserName()) .setName(d.getSalesUserName())
.setEmail(d.getEmail()) .setEmail(d.getEmail())
.setSalesUserName(d.getSalesUserName()) .setSalesUserName(d.getSalesUserName())
.setAreaName(area.getName()) .setAreaName(area.getName())
.setEnable(d.getEnable()) .setEnable(d.getEnable())
.setEnable(d.getEnable())
.setExpireTime(d.getExpireTime()) .setExpireTime(d.getExpireTime())
.setCreateBy(appUser.getName()) .setCreateBy(appUser.getName())
.setCreateTime(d.getCreateTime()) .setCreateTime(d.getCreateTime())
.setUpdateBy(updateBy) .setUpdateBy(updateBy)
.setPrimary(true) .setPrimary(true)
.setState(d.getExpireTime().isAfter(ChronoLocalDate.from(LocalDateTime.now())) ? 1 : 2) .setState(d.getExpireTime().isAfter(ChronoLocalDate.from(LocalDateTime.now())) ? 1 : 2)
.setLastLoginTime(d.getLastLoginTime()); .setLastLoginTime(d.getLastLoginTime())
.setChildren(getChildrenOfAppUser(d.getId()));
}); });
} }

View File

@ -1,6 +1,7 @@
package com.nflg.mobilebroken.repository.service.impl; package com.nflg.mobilebroken.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -62,12 +63,10 @@ public class ParamConfigServiceImpl extends ServiceImpl<ParamConfigMapper, Param
@Override @Override
public PageData<ParamConfigVO> search(SearchConfigRequest request) { public PageData<ParamConfigVO> search(SearchConfigRequest request) {
IPage<ParamConfig> page = new Page<>(); IPage<ParamConfig> page = lambdaQuery()
page.setCurrent(request.getPage()); .like(StrUtil.isNotBlank(request.getName()), ParamConfig::getName, request.getName())
page.setSize(request.getPageSize()); .like(StrUtil.isNotBlank(request.getCode()), ParamConfig::getCode, request.getCode())
lambdaQuery().like(ParamConfig::getName, request.getName()) .page(new Page<>(request.getPage(), request.getPageSize()));
.like(ParamConfig::getCode, request.getCode())
.page(page);
if (CollectionUtil.isEmpty(page.getRecords())) { if (CollectionUtil.isEmpty(page.getRecords())) {
return new PageData<>(); return new PageData<>();
} }

View File

@ -38,6 +38,7 @@ public class CodeGenerator {
.enableChainModel() .enableChainModel()
.enableFileOverride(); .enableFileOverride();
builder.controllerBuilder().disable(); builder.controllerBuilder().disable();
builder.addExclude("admin_menu");
}) })
.templateEngine(new FreemarkerTemplateEngine()) .templateEngine(new FreemarkerTemplateEngine())
.execute(); .execute();