|
@@ -0,0 +1,118 @@
|
|
|
|
|
+package com.webflux.launchadmin.mysql.service.groupUsers;
|
|
|
|
|
+
|
|
|
|
|
+import com.webflux.launchadmin.config.BaseContextHandler;
|
|
|
|
|
+import com.webflux.launchadmin.global.BaseException;
|
|
|
|
|
+import com.webflux.launchadmin.mysql.controller.groupUsers.res.DeleteRes;
|
|
|
|
|
+import com.webflux.launchadmin.mysql.entity.groupUsers.Dto.GroupUsersDto;
|
|
|
|
|
+import com.webflux.launchadmin.mysql.entity.groupUsers.GroupUsers;
|
|
|
|
|
+import com.webflux.launchadmin.mysql.entity.planNew.PlanNew;
|
|
|
|
|
+import com.webflux.launchadmin.mysql.repository.groupUsers.GroupUsersRepository;
|
|
|
|
|
+import com.webflux.launchcommon.returnObj.Paged;
|
|
|
|
|
+import com.webflux.launchcommon.returnObj.RStatus;
|
|
|
|
|
+import jakarta.annotation.Resource;
|
|
|
|
|
+import org.springframework.data.domain.*;
|
|
|
|
|
+import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
|
|
|
|
|
+import org.springframework.data.r2dbc.repository.R2dbcRepository;
|
|
|
|
|
+import org.springframework.data.relational.core.query.Criteria;
|
|
|
|
|
+import org.springframework.data.relational.core.query.Query;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import reactor.core.publisher.Flux;
|
|
|
|
|
+import reactor.core.publisher.Mono;
|
|
|
|
|
+
|
|
|
|
|
+import java.time.ZonedDateTime;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Objects;
|
|
|
|
|
+
|
|
|
|
|
+@Service
|
|
|
|
|
+public class GroupUsersServiceImpl implements GroupUsersServiceInterface {
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private GroupUsersRepository groupUsersRepository;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private R2dbcEntityTemplate template;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Mono<RStatus<Paged<GroupUsers>>> page(String type, int page, int size) {
|
|
|
|
|
+ Criteria criteria = Criteria.empty();
|
|
|
|
|
+ if (Objects.nonNull(type) && !"".equals(type.trim())) {
|
|
|
|
|
+ criteria = criteria.and("group_users_type").is(type);
|
|
|
|
|
+ }
|
|
|
|
|
+ Query query = Query.query(criteria);
|
|
|
|
|
+ int skip = (page - 1) *size;
|
|
|
|
|
+ int limit = size;
|
|
|
|
|
+ Mono<Long> count = template.count(query, GroupUsers.class);
|
|
|
|
|
+ Mono<List<GroupUsers>> created_at = template.select(Query.query(criteria)
|
|
|
|
|
+ .offset(skip)
|
|
|
|
|
+ .limit(limit)
|
|
|
|
|
+ .sort(Sort.by(Sort.Order.desc("created_at"))), GroupUsers.class)
|
|
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("查询失败::error::" + throwable.getMessage())))
|
|
|
|
|
+ .collectList();
|
|
|
|
|
+ Mono<Paged<GroupUsers>> pagedMono = Mono.zip(count, created_at).flatMap(f -> {
|
|
|
|
|
+ Paged<GroupUsers> groupUsersPaged = new Paged<>(f.getT1(), f.getT2(), page, size);
|
|
|
|
|
+ return Mono.just(groupUsersPaged);
|
|
|
|
|
+ });
|
|
|
|
|
+ return RStatus.successList(pagedMono);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Mono<RStatus<DeleteRes>> deletePosterById(Long[] groupUsersId) {
|
|
|
|
|
+ Mono<DeleteRes> deleteResMono = groupUsersRepository
|
|
|
|
|
+ .deleteAllById(List.of(groupUsersId))
|
|
|
|
|
+ .then(Mono.just(new DeleteRes(List.of(groupUsersId))))
|
|
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("删除::error::" + throwable.getMessage())));
|
|
|
|
|
+ return RStatus.success(deleteResMono);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Mono<RStatus<GroupUsers>> saveOrUpdate(GroupUsersDto groupUsersDto) {
|
|
|
|
|
+ ZonedDateTime now = ZonedDateTime.now();
|
|
|
|
|
+ if(Objects.isNull(groupUsersDto.getGroupUsersId())){
|
|
|
|
|
+ Mono<GroupUsers> insert = insertGroupUsersMono(groupUsersDto, BaseContextHandler.getUserName(), BaseContextHandler.getUserId(), now);
|
|
|
|
|
+ return RStatus.success(insert);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ Mono<GroupUsers> groupUsersMono = updateGroupUsersMono(groupUsersDto, now);
|
|
|
|
|
+ return RStatus.success(groupUsersMono);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Mono<RStatus<GroupUsers>> getById(Long groupUsersId) {
|
|
|
|
|
+ Mono<GroupUsers> groupUsersMono = groupUsersRepository
|
|
|
|
|
+ .findById(groupUsersId)
|
|
|
|
|
+ .switchIfEmpty( Mono.error(new BaseException("id异常 查询结果为空")))
|
|
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("查询失败::" + throwable.getMessage())));
|
|
|
|
|
+ return RStatus.success(groupUsersMono);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Mono<GroupUsers> updateGroupUsersMono(GroupUsersDto groupUsersDto, ZonedDateTime now) {
|
|
|
|
|
+ return groupUsersRepository.findById(groupUsersDto.getGroupUsersId())
|
|
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("修改失败::" + throwable.getMessage())))
|
|
|
|
|
+ .flatMap(f -> {
|
|
|
|
|
+ GroupUsers groupUsers = new GroupUsers(groupUsersDto.getGroupUsersId(),
|
|
|
|
|
+ groupUsersDto.getGroupUsersHead(),
|
|
|
|
|
+ groupUsersDto.getGroupUsersNickname(),
|
|
|
|
|
+ f.createdAt(),
|
|
|
|
|
+ now,
|
|
|
|
|
+ groupUsersDto.getGroupUsersType(),
|
|
|
|
|
+ f.createUser(),
|
|
|
|
|
+ f.createId()
|
|
|
|
|
+ );
|
|
|
|
|
+ return groupUsersRepository.save(groupUsers)
|
|
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("修改失败::" + throwable.getMessage())));
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Mono<GroupUsers> insertGroupUsersMono(GroupUsersDto groupUsersDto, String userName, String userId, ZonedDateTime now) {
|
|
|
|
|
+ GroupUsers groupUsers = new GroupUsers(groupUsersDto.getGroupUsersId(),
|
|
|
|
|
+ groupUsersDto.getGroupUsersHead(),
|
|
|
|
|
+ groupUsersDto.getGroupUsersNickname(),
|
|
|
|
|
+ now,
|
|
|
|
|
+ null,
|
|
|
|
|
+ groupUsersDto.getGroupUsersType(),
|
|
|
|
|
+ userName,
|
|
|
|
|
+ userId
|
|
|
|
|
+ );
|
|
|
|
|
+ return template.insert(groupUsers)
|
|
|
|
|
+ .onErrorResume(throwable -> Mono.error(new BaseException("插入失败::"+ throwable.getMessage())));
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|