|
@@ -12,6 +12,7 @@ import org.dromara.api.RemotePetService;
|
|
|
import org.dromara.api.domain.vo.RemoteCustomerVo;
|
|
import org.dromara.api.domain.vo.RemoteCustomerVo;
|
|
|
import org.dromara.api.domain.vo.RemotePetVo;
|
|
import org.dromara.api.domain.vo.RemotePetVo;
|
|
|
import org.dromara.common.core.constant.TenantConstants;
|
|
import org.dromara.common.core.constant.TenantConstants;
|
|
|
|
|
+import org.dromara.common.core.enums.UserType;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.common.mybatis.utils.WrapperUtils;
|
|
import org.dromara.common.mybatis.utils.WrapperUtils;
|
|
@@ -28,15 +29,19 @@ import org.dromara.order.enums.*;
|
|
|
import org.dromara.order.mapper.SysSubOrderLogMapper;
|
|
import org.dromara.order.mapper.SysSubOrderLogMapper;
|
|
|
import org.dromara.order.mapper.SysSubOrderMapper;
|
|
import org.dromara.order.mapper.SysSubOrderMapper;
|
|
|
import org.dromara.order.service.ISysSubOrderService;
|
|
import org.dromara.order.service.ISysSubOrderService;
|
|
|
|
|
+import org.dromara.resource.api.RemoteFileService;
|
|
|
|
|
+import org.dromara.resource.api.domain.RemoteFile;
|
|
|
import org.dromara.system.api.RemoteStoreService;
|
|
import org.dromara.system.api.RemoteStoreService;
|
|
|
import org.dromara.system.api.RemoteTenantService;
|
|
import org.dromara.system.api.RemoteTenantService;
|
|
|
import org.dromara.system.api.RemoteUserService;
|
|
import org.dromara.system.api.RemoteUserService;
|
|
|
import org.dromara.system.api.domain.vo.RemoteStoreVo;
|
|
import org.dromara.system.api.domain.vo.RemoteStoreVo;
|
|
|
import org.dromara.system.api.domain.vo.RemoteUserVo;
|
|
import org.dromara.system.api.domain.vo.RemoteUserVo;
|
|
|
|
|
+import org.dromara.system.api.model.LoginUser;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+import java.util.concurrent.atomic.AtomicLong;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
@@ -58,6 +63,8 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
private final RemoteFulfillerService remoteFulfillerService;
|
|
private final RemoteFulfillerService remoteFulfillerService;
|
|
|
@DubboReference
|
|
@DubboReference
|
|
|
private final RemoteTenantService remoteTenantService;
|
|
private final RemoteTenantService remoteTenantService;
|
|
|
|
|
+ @DubboReference
|
|
|
|
|
+ private final RemoteFileService remoteFileService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public TableDataInfo<SysSubOrderListPageVo> list(SysSubOrderListPageBo bo, PageQuery pageQuery) {
|
|
public TableDataInfo<SysSubOrderListPageVo> list(SysSubOrderListPageBo bo, PageQuery pageQuery) {
|
|
@@ -188,13 +195,49 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
@Override
|
|
|
public boolean cancel(SysSubOrderCancelBo bo) {
|
|
public boolean cancel(SysSubOrderCancelBo bo) {
|
|
|
- return baseMapper.update(
|
|
|
|
|
- Wrappers.lambdaUpdate(SysSubOrder.class)
|
|
|
|
|
- .eq(SysSubOrder::getId, bo.getOrderId())
|
|
|
|
|
- .set(SysSubOrder::getStatus, OrderStatusEnum.CANCELLED.getValue())
|
|
|
|
|
- ) > 0;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ SysSubOrder subOrder = baseMapper.selectById(bo.getOrderId());
|
|
|
|
|
+ subOrder.setStatus(OrderStatusEnum.CANCELLED.getValue());
|
|
|
|
|
+
|
|
|
|
|
+ boolean orderFlag = baseMapper.updateById(subOrder) == 0;
|
|
|
|
|
+ if (orderFlag) {
|
|
|
|
|
+ throw new RuntimeException("修改订单状态失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ SysSubOrderLog log = new SysSubOrderLog();
|
|
|
|
|
+
|
|
|
|
|
+ LoginUser loginUser = LoginHelper.getLoginUser();
|
|
|
|
|
+ if (loginUser.getUserType().equals(UserType.FULFILLER_USER.getUserType())) {
|
|
|
|
|
+ log.setSubOrderId(subOrder.getId());
|
|
|
|
|
+ log.setActioner(LoginHelper.getUserId());
|
|
|
|
|
+ log.setActionerType(OrderLogActionerTypeEnum.FULFILLER.getValue());
|
|
|
|
|
+ log.setLogType(OrderLogTypeEnum.FULFILLER.getValue());
|
|
|
|
|
+ OrderLogFulfillerStepEnum step = OrderLogFulfillerStepEnum.REJECT;
|
|
|
|
|
+ log.setStep(step.getStep());
|
|
|
|
|
+ log.setTitle(step.getTitle());
|
|
|
|
|
+ log.setContent(String.format(step.getContent(), loginUser.getNickname()));
|
|
|
|
|
+ log.setTenantId(subOrder.getTenantId());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.setSubOrderId(subOrder.getId());
|
|
|
|
|
+ log.setActioner(LoginHelper.getUserId());
|
|
|
|
|
+ log.setActionerType(OrderLogActionerTypeEnum.SYS_USER.getValue());
|
|
|
|
|
+ log.setLogType(OrderLogTypeEnum.ORDER.getValue());
|
|
|
|
|
+ OrderLogSystemStepEnum step = OrderLogSystemStepEnum.CANCEL;
|
|
|
|
|
+ log.setStep(step.getStep());
|
|
|
|
|
+ log.setTitle(step.getTitle());
|
|
|
|
|
+ log.setContent(step.getContent());
|
|
|
|
|
+ log.setTenantId(subOrder.getTenantId());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ boolean logFlag = subOrderLogMapper.insert(log) == 0;
|
|
|
|
|
+ if (logFlag) {
|
|
|
|
|
+ throw new RuntimeException("日志追加失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -304,14 +347,20 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
|
|
|
|
|
List<Long> petIds = new ArrayList<>();
|
|
List<Long> petIds = new ArrayList<>();
|
|
|
List<Long> customerIds = new ArrayList<>();
|
|
List<Long> customerIds = new ArrayList<>();
|
|
|
|
|
+ List<Long> avatarIds = new ArrayList<>();
|
|
|
Map<Long, RemotePetVo> petMap = new HashMap<>();
|
|
Map<Long, RemotePetVo> petMap = new HashMap<>();
|
|
|
Map<Long, RemoteCustomerVo> customerMap = new HashMap<>();
|
|
Map<Long, RemoteCustomerVo> customerMap = new HashMap<>();
|
|
|
|
|
+ Map<Long, RemoteFile> avatarMap = new HashMap<>();
|
|
|
page.getRecords().forEach(e -> {
|
|
page.getRecords().forEach(e -> {
|
|
|
petIds.add(e.getUsrPet());
|
|
petIds.add(e.getUsrPet());
|
|
|
customerIds.add(e.getUsrCustomer());
|
|
customerIds.add(e.getUsrCustomer());
|
|
|
});
|
|
});
|
|
|
- remotePetService.getByIds(petIds).forEach(e -> petMap.put(e.getId(), e));
|
|
|
|
|
|
|
+ remotePetService.getByIds(petIds).forEach(e -> {
|
|
|
|
|
+ petMap.put(e.getId(), e);
|
|
|
|
|
+ avatarIds.add(e.getAvatar());
|
|
|
|
|
+ });
|
|
|
remoteCustomerService.getByIds(customerIds).forEach(e -> customerMap.put(e.getId(), e));
|
|
remoteCustomerService.getByIds(customerIds).forEach(e -> customerMap.put(e.getId(), e));
|
|
|
|
|
+ remoteFileService.selectByIds(avatarIds).forEach(e -> avatarMap.put(e.getOssId(), e));
|
|
|
|
|
|
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
|
SysSubOrderPendingAcceptPageVo vo = new SysSubOrderPendingAcceptPageVo();
|
|
SysSubOrderPendingAcceptPageVo vo = new SysSubOrderPendingAcceptPageVo();
|
|
@@ -324,6 +373,8 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
if (pet != null) {
|
|
if (pet != null) {
|
|
|
vo.setPetName(pet.getName());
|
|
vo.setPetName(pet.getName());
|
|
|
vo.setBreed(pet.getBreed());
|
|
vo.setBreed(pet.getBreed());
|
|
|
|
|
+ vo.setPetAvatar(pet.getAvatar());
|
|
|
|
|
+ vo.setPetAvatarUrl(avatarMap.containsKey(pet.getAvatar()) ? avatarMap.get(pet.getAvatar()).getUrl() : null);
|
|
|
}
|
|
}
|
|
|
vo.setStore(e.getStore());
|
|
vo.setStore(e.getStore());
|
|
|
// vo.setStoreName();
|
|
// vo.setStoreName();
|
|
@@ -396,10 +447,40 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
@Override
|
|
@Override
|
|
|
public SysSubOrderCountVo count() {
|
|
public SysSubOrderCountVo count() {
|
|
|
SysSubOrderCountVo vo = new SysSubOrderCountVo();
|
|
SysSubOrderCountVo vo = new SysSubOrderCountVo();
|
|
|
- vo.setTotal(0L);
|
|
|
|
|
- vo.setReject(0L);
|
|
|
|
|
- vo.setAward(0L);
|
|
|
|
|
- vo.setPunishment(0L);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ List<Long> total = new ArrayList<>();
|
|
|
|
|
+ List<Long> reject = new ArrayList<>();
|
|
|
|
|
+ List<Long> completed = new ArrayList<>();
|
|
|
|
|
+ AtomicLong price = new AtomicLong(0L);
|
|
|
|
|
+
|
|
|
|
|
+ subOrderLogMapper.selectList(
|
|
|
|
|
+ Wrappers.lambdaQuery(SysSubOrderLog.class)
|
|
|
|
|
+ .eq(SysSubOrderLog::getActionerType, OrderLogActionerTypeEnum.FULFILLER.getValue())
|
|
|
|
|
+ .eq(SysSubOrderLog::getActioner, LoginHelper.getUserId())
|
|
|
|
|
+ ).forEach(e -> {
|
|
|
|
|
+ if (!total.contains(e.getSubOrderId())) {
|
|
|
|
|
+ total.add(e.getSubOrderId());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (e.getStep().equals(OrderLogFulfillerStepEnum.REJECT.getStep())) {
|
|
|
|
|
+ if (!reject.contains(e.getSubOrderId())) {
|
|
|
|
|
+ reject.add(e.getSubOrderId());
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if (e.getStep().equals(OrderLogFulfillerStepEnum.COMPLETED.getStep())) {
|
|
|
|
|
+ if (!completed.contains(e.getSubOrderId())) {
|
|
|
|
|
+ completed.add(e.getSubOrderId());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ baseMapper.selectList(
|
|
|
|
|
+ Wrappers.lambdaQuery(SysSubOrder.class)
|
|
|
|
|
+ .in(SysSubOrder::getId, WrapperUtils.convertIds(completed))
|
|
|
|
|
+ ).forEach(e -> price.addAndGet(e.getPrice()));
|
|
|
|
|
+
|
|
|
|
|
+ vo.setTotal((long) total.size());
|
|
|
|
|
+ vo.setReject((long) reject.size());
|
|
|
|
|
+ vo.setCompleted((long) completed.size());
|
|
|
|
|
+ vo.setPrice(price.get());
|
|
|
return vo;
|
|
return vo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -498,6 +579,7 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
.eq(bo.getService() != null, SysSubOrder::getService, bo.getService())
|
|
.eq(bo.getService() != null, SysSubOrder::getService, bo.getService())
|
|
|
.ge(bo.getStartServiceTime() != null, SysSubOrder::getServiceTime, bo.getStartServiceTime())
|
|
.ge(bo.getStartServiceTime() != null, SysSubOrder::getServiceTime, bo.getStartServiceTime())
|
|
|
.le(bo.getEndServiceTime() != null, SysSubOrder::getServiceTime, bo.getEndServiceTime())
|
|
.le(bo.getEndServiceTime() != null, SysSubOrder::getServiceTime, bo.getEndServiceTime())
|
|
|
|
|
+ .eq(SysSubOrder::getFulfiller, LoginHelper.getUserId())
|
|
|
.orderByDesc(SysSubOrder::getId);
|
|
.orderByDesc(SysSubOrder::getId);
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(bo.getContent())) {
|
|
if (StringUtils.isNotBlank(bo.getContent())) {
|
|
@@ -509,14 +591,20 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
|
|
|
|
|
List<Long> petIds = new ArrayList<>();
|
|
List<Long> petIds = new ArrayList<>();
|
|
|
List<Long> customerIds = new ArrayList<>();
|
|
List<Long> customerIds = new ArrayList<>();
|
|
|
|
|
+ List<Long> avatarIds = new ArrayList<>();
|
|
|
Map<Long, RemotePetVo> petMap = new HashMap<>();
|
|
Map<Long, RemotePetVo> petMap = new HashMap<>();
|
|
|
Map<Long, RemoteCustomerVo> customerMap = new HashMap<>();
|
|
Map<Long, RemoteCustomerVo> customerMap = new HashMap<>();
|
|
|
|
|
+ Map<Long, RemoteFile> avatarMap = new HashMap<>();
|
|
|
page.getRecords().forEach(e -> {
|
|
page.getRecords().forEach(e -> {
|
|
|
petIds.add(e.getUsrPet());
|
|
petIds.add(e.getUsrPet());
|
|
|
customerIds.add(e.getUsrCustomer());
|
|
customerIds.add(e.getUsrCustomer());
|
|
|
});
|
|
});
|
|
|
- remotePetService.getByIds(petIds).forEach(e -> petMap.put(e.getId(), e));
|
|
|
|
|
|
|
+ remotePetService.getByIds(petIds).forEach(e -> {
|
|
|
|
|
+ petMap.put(e.getId(), e);
|
|
|
|
|
+ avatarIds.add(e.getAvatar());
|
|
|
|
|
+ });
|
|
|
remoteCustomerService.getByIds(customerIds).forEach(e -> customerMap.put(e.getId(), e));
|
|
remoteCustomerService.getByIds(customerIds).forEach(e -> customerMap.put(e.getId(), e));
|
|
|
|
|
+ remoteFileService.selectByIds(avatarIds).forEach(e -> avatarMap.put(e.getOssId(), e));
|
|
|
|
|
|
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
|
SysSubOrderListOnMyOrderPageVo vo = new SysSubOrderListOnMyOrderPageVo();
|
|
SysSubOrderListOnMyOrderPageVo vo = new SysSubOrderListOnMyOrderPageVo();
|
|
@@ -529,6 +617,8 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
if (pet != null) {
|
|
if (pet != null) {
|
|
|
vo.setPetName(pet.getName());
|
|
vo.setPetName(pet.getName());
|
|
|
vo.setBreed(pet.getBreed());
|
|
vo.setBreed(pet.getBreed());
|
|
|
|
|
+ vo.setPetAvatar(pet.getAvatar());
|
|
|
|
|
+ vo.setPetAvatarUrl(avatarMap.containsKey(pet.getAvatar()) ? avatarMap.get(pet.getAvatar()).getUrl() : null);
|
|
|
}
|
|
}
|
|
|
vo.setStore(e.getStore());
|
|
vo.setStore(e.getStore());
|
|
|
// vo.setStoreName();
|
|
// vo.setStoreName();
|