From 039a33d1bfa6ef041161666bbd120c34086fe7c1 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 14 十月 2024 14:09:25 +0800
Subject: [PATCH] 课程代码

---
 xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java |  411 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 409 insertions(+), 2 deletions(-)

diff --git a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java
index f86722d..c5b775e 100644
--- a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java
+++ b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java
@@ -1,8 +1,36 @@
 package com.xinquan.order.controller.management;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xinquan.common.core.domain.R;
+import com.xinquan.common.core.utils.page.CollUtils;
+import com.xinquan.common.core.utils.page.PageDTO;
+import com.xinquan.common.security.utils.SecurityUtils;
+import com.xinquan.course.api.domain.Course;
+import com.xinquan.course.api.feign.RemoteCourseService;
+import com.xinquan.meditation.api.domain.Meditation;
+import com.xinquan.meditation.api.feign.RemoteMeditationService;
+import com.xinquan.order.api.domain.Order;
+import com.xinquan.order.api.domain.dto.OrderListDTO;
+import com.xinquan.order.api.domain.vo.OrderCountVO;
+import com.xinquan.order.domain.OrderPaymentRecord;
+import com.xinquan.order.service.OrderPaymentRecordService;
+import com.xinquan.order.service.OrderService;
+import com.xinquan.system.api.RemoteUserService;
+import com.xinquan.system.api.domain.AppUser;
+import com.xinquan.system.api.domain.SysUser;
+import com.xinquan.user.api.feign.RemoteAppUserService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -15,6 +43,385 @@
 @RestController
 @RequestMapping("/mgt/order/order")
 public class MgtOrderController {
+    @Resource
+    private OrderService orderService;
+    @Resource
+    private OrderPaymentRecordService orderPaymentRecordService;
+    @Resource
+    private RemoteAppUserService remoteAppUserService;
+    @Resource
+    private RemoteCourseService remoteCourseService;
+    @Resource
+    private RemoteMeditationService remoteMeditationService;
+    @Resource
+    private RemoteUserService remoteUserService;
 
+    @PostMapping("/orderList")
+    @ApiOperation(value = "订单列表管理列表-分页", tags = {"管理后台-订单列表管理"})
+    public R<PageDTO<Order>> orderList(@RequestBody OrderListDTO courseDTO) {
+        String startTime = null;
+        String endTime = null;
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getTime())){
+            String[] split = courseDTO.getTime().split(" - ");
+            startTime = split[0]+"00:00:00";
+            endTime = split[1]+"23:59:59";
+        }
+        List<Integer> payType1 = new ArrayList<>();
+        payType1.add(1);
+        payType1.add(5);
+        List<Integer> payType2 = new ArrayList<>();
+        payType2.add(2);
+        payType2.add(6);
+        List<Integer> payType3 = new ArrayList<>();
+        payType3.add(4);
+        payType3.add(7);
+        LambdaQueryWrapper<Order> courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        courseLambdaQueryWrapper.between(Order::getCreateTime, startTime, endTime);
+        if (courseDTO.getPayType()!=null){
+            switch (courseDTO.getPayType()){
+                case 1:
+                    courseLambdaQueryWrapper.in(Order::getPayType,payType1);
+                    break;
+                case 2:
+                    courseLambdaQueryWrapper.in(Order::getPayType,payType2);
+                    break;
+                case 3:
+                    courseLambdaQueryWrapper.eq(Order::getPayType,courseDTO.getPayType());
+                    break;
+                case 4:
+                    courseLambdaQueryWrapper.in(Order::getPayType,payType3);
+                    break;
+            }
+
+        }
+        courseLambdaQueryWrapper.eq(courseDTO.getPaymentStatus()!=null,Order::getPaymentStatus, courseDTO.getPaymentStatus());
+        courseLambdaQueryWrapper.eq(courseDTO.getOrderFrom()!=null,Order::getOrderFrom, courseDTO.getOrderFrom());
+        courseLambdaQueryWrapper.eq(courseDTO.getUid()!=null&&(!courseDTO.getUid().isEmpty()),Order::getAppUserId, courseDTO.getUid());
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getBuyContent())){
+            // 查询购买内容
+            List<Long> collect1 = orderService.lambdaQuery().like(Order::getVipType, courseDTO.getBuyContent()).list().stream()
+                    .map(Order::getId).collect(Collectors.toList());
+            List<Long> collect2 = orderService.lambdaQuery().like(Order::getBizOrderNo, courseDTO.getBuyContent()).list().stream()
+                    .map(Order::getId).collect(Collectors.toList());
+            List<Long> data = remoteCourseService.getCourseIdsByName(courseDTO.getBuyContent()).getData();
+            if (!data.isEmpty()){
+                List<Long> collect3 = orderService.lambdaQuery().in(Order::getBusinessId, data)
+                        .eq(Order::getOrderFrom, 2)
+                        .list().stream()
+                        .map(Order::getId).collect(Collectors.toList());
+                if (!collect3.isEmpty()){
+                    collect1.addAll(collect3);
+                }
+            }
+            List<Long> data1 = remoteMeditationService.getMeditationIdsByName(courseDTO.getBuyContent()).getData();
+            if (!data1.isEmpty()){
+                List<Long> collect3 = orderService.lambdaQuery().in(Order::getBusinessId, data1)
+                        .eq(Order::getOrderFrom, 1)
+                        .list().stream()
+                        .map(Order::getId).collect(Collectors.toList());
+                if (!collect3.isEmpty()){
+                    collect1.addAll(collect3);
+                }
+            }
+
+            collect1.addAll(collect2);
+            List<Long> collect = collect1.stream().distinct().collect(Collectors.toList());
+            if (collect.isEmpty()){
+                collect.add(-1L);
+            }
+            courseLambdaQueryWrapper.in(Order::getId,collect);
+        }
+
+        courseLambdaQueryWrapper.orderByDesc(Order::getCreateTime);
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getUserNameOrPhone())){
+            List<Long> collect = remoteAppUserService.getAppUserByNameOrPhone(courseDTO.getUserNameOrPhone()).getData();
+            if (collect.isEmpty()){
+                collect.add(-1L);
+            }
+            courseLambdaQueryWrapper.in(Order::getAppUserId, collect);
+        }
+
+        Page<Order> page = orderService.page(new Page<>(courseDTO.getPageCurr(), courseDTO.getPageSize()), courseLambdaQueryWrapper);
+        if (CollUtils.isEmpty(page.getRecords())) {
+            return R.ok(PageDTO.empty(page));
+        }
+        for (Order record : page.getRecords()) {
+            record.setUid(record.getId().toString());
+            AppUser byId1 = remoteAppUserService.getAppUserById(record.getAppUserId()+"").getData();
+            if (Objects.nonNull(byId1)){
+                record.setUserName(byId1.getNickname());
+                record.setCellPhone(byId1.getCellPhone());
+            }
+            if (record.getOrderFrom()!=null){
+                switch (record.getOrderFrom()){
+                    case 1:
+                        Meditation data = remoteMeditationService.getMeditationById(record.getBusinessId()).getData();
+                        if (data!=null){
+                            record.setCategoryMeditationName(data.getCategoryName());
+                            record.setMeditationTitle(data.getMeditationTitle());
+                            record.setIconUrl(data.getIconUrl());
+                            record.setDetailDescription(data.getDetailDescription());
+                            record.setGeneralPriceMeditation(data.getGeneralPrice());
+                            record.setListingStatusMeditation(data.getListingStatus());
+                            record.setMeditationUid(data.getId()+"");
+                        }
+                        break;
+                    case 2:
+                        Course data1 = remoteCourseService.getCourseById(record.getBusinessId(),"").getData();
+                        if (data1!=null){
+                            record.setCategoryCourseName(data1.getCategoryName());
+                            record.setCourseTitle(data1.getCourseTitle());
+                            record.setCoverUrl(data1.getCoverUrl());
+                            record.setTutor(data1.getTutor());
+                            record.setCourseChapterCount(data1.getCourseChapterCount());
+                            record.setGeneralPriceCourse(data1.getGeneralPrice());
+                            record.setListingStatusCourse(data1.getListingStatus());
+                            record.setCourseUid(data1.getId()+"");
+                        }
+                        break;
+                    case 3:
+                        record.setBuyContent(record.getVipType());
+                        record.setGeneralPriceVip(record.getRealPayAmount());
+                        break;
+                }
+            }
+        }
+        return R.ok(PageDTO.of(page, Order.class));
+    }
+    @PostMapping("/orderCount")
+    @ApiOperation(value = "订单列表管理列表上方合计数据", tags = {"管理后台-订单列表管理"})
+
+    public R<OrderCountVO> orderCount(@RequestBody OrderListDTO courseDTO) {
+        OrderCountVO orderCountVO = new OrderCountVO();
+        String startTime = null;
+        String endTime = null;
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getTime())){
+            String[] split = courseDTO.getTime().split(" - ");
+            startTime = split[0]+"00:00:00";
+            endTime = split[1]+"23:59:59";
+        }
+        List<Integer> payType1 = new ArrayList<>();
+        payType1.add(1);
+        payType1.add(5);
+        List<Integer> payType2 = new ArrayList<>();
+        payType2.add(2);
+        payType2.add(6);
+        List<Integer> payType3 = new ArrayList<>();
+        payType3.add(4);
+        payType3.add(7);
+        LambdaQueryWrapper<Order> courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        courseLambdaQueryWrapper.between(Order::getCreateTime, startTime, endTime);
+        if (courseDTO.getPayType()!=null){
+            switch (courseDTO.getPayType()){
+                case 1:
+                    courseLambdaQueryWrapper.in(Order::getPayType,payType1);
+                    break;
+                case 2:
+                    courseLambdaQueryWrapper.in(Order::getPayType,payType2);
+                    break;
+                case 3:
+                    courseLambdaQueryWrapper.eq(Order::getPayType,courseDTO.getPayType());
+                    break;
+                case 4:
+                    courseLambdaQueryWrapper.in(Order::getPayType,payType3);
+                    break;
+            }
+
+        }
+        courseLambdaQueryWrapper.eq(courseDTO.getPaymentStatus()!=null,Order::getPaymentStatus, courseDTO.getPaymentStatus());
+        courseLambdaQueryWrapper.eq(courseDTO.getOrderFrom()!=null,Order::getOrderFrom, courseDTO.getOrderFrom());
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getBuyContent())){
+            // 查询购买内容
+            List<Long> collect1 = orderService.lambdaQuery().like(Order::getVipType, courseDTO.getBuyContent()).list().stream()
+                    .map(Order::getId).collect(Collectors.toList());
+            List<Long> collect2 = orderService.lambdaQuery().like(Order::getBizOrderNo, courseDTO.getBuyContent()).list().stream()
+                    .map(Order::getId).collect(Collectors.toList());
+            List<Long> data = remoteCourseService.getCourseIdsByName(courseDTO.getBuyContent()).getData();
+            if (!data.isEmpty()){
+                List<Long> collect3 = orderService.lambdaQuery().in(Order::getBusinessId, data)
+                        .eq(Order::getOrderFrom, 2)
+                        .list().stream()
+                        .map(Order::getId).collect(Collectors.toList());
+                if (!collect3.isEmpty()){
+                    collect1.addAll(collect3);
+                }
+            }
+            List<Long> data1 = remoteMeditationService.getMeditationIdsByName(courseDTO.getBuyContent()).getData();
+            if (!data1.isEmpty()){
+                List<Long> collect3 = orderService.lambdaQuery().in(Order::getBusinessId, data1)
+                        .eq(Order::getOrderFrom, 1)
+                        .list().stream()
+                        .map(Order::getId).collect(Collectors.toList());
+                if (!collect3.isEmpty()){
+                    collect1.addAll(collect3);
+                }
+            }
+
+            collect1.addAll(collect2);
+            List<Long> collect = collect1.stream().distinct().collect(Collectors.toList());
+            if (collect.isEmpty()){
+                collect.add(-1L);
+            }
+            courseLambdaQueryWrapper.in(Order::getId,collect);
+        }
+        courseLambdaQueryWrapper.orderByDesc(Order::getCreateTime);
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getUserNameOrPhone())){
+            List<Long> collect = remoteAppUserService.getAppUserByNameOrPhone(courseDTO.getUserNameOrPhone()).getData();
+            if (collect.isEmpty()){
+                collect.add(-1L);
+            }
+            courseLambdaQueryWrapper.in(Order::getAppUserId, collect);
+        }
+        List<Order> page = orderService.list(courseLambdaQueryWrapper);
+        Integer payCount = 0;
+        Integer completeCount = 0;
+        Integer cancelCount = 0;
+        BigDecimal totalMoney = new BigDecimal("0");
+        for (Order record : page) {
+            if (record.getPaymentStatus()!=null){
+                switch (record.getPaymentStatus()){
+                    case 1:
+                        payCount++;
+                        break;
+                    case 2:
+                        completeCount++;
+                        break;
+                    case 3:
+                        cancelCount++;
+                        break;
+                }
+            }
+            if (record.getRealPayAmount()!=null && record.getRefundStatus()!=3){
+                totalMoney = totalMoney.add(record.getRealPayAmount());
+            }
+        }
+        orderCountVO.setTotalCount(page.size());
+        orderCountVO.setPayCount(payCount);
+        orderCountVO.setCompleteCount(completeCount);
+        orderCountVO.setCancelCount(cancelCount);
+        orderCountVO.setTotalMoney(totalMoney);
+        return R.ok(orderCountVO);
+    }
+
+    @GetMapping("/detailOrder")
+    @ApiOperation(value = "查看详情订单列表管理", notes = "管理后台-订单列表管理")
+    public R<Order> detailOrder(String uid) {
+        Order record = orderService.getById(uid);
+        if (record.getOrderFrom()!=null){
+            switch (record.getOrderFrom()){
+                case 1:
+                    Meditation data = remoteMeditationService.getMeditationById(record.getBusinessId()).getData();
+                    if (data!=null){
+                        record.setCategoryMeditationName(data.getCategoryName());
+                        record.setMeditationTitle(data.getMeditationTitle());
+                        record.setIconUrl(data.getIconUrl());
+                        record.setDetailDescription(data.getDetailDescription());
+                        record.setGeneralPriceMeditation(data.getGeneralPrice());
+                        record.setListingStatusMeditation(data.getListingStatus());
+                        record.setMeditationUid(data.getId()+"");
+                    }
+                    break;
+                case 2:
+                    Course data1 = remoteCourseService.getCourseById(record.getBusinessId(),"").getData();
+                    if (data1!=null){
+                        record.setCategoryCourseName(data1.getCategoryName());
+                        record.setCourseTitle(data1.getCourseTitle());
+                        record.setCoverUrl(data1.getCoverUrl());
+                        record.setTutor(data1.getTutor());
+                        record.setCourseChapterCount(data1.getCourseChapterCount());
+                        record.setGeneralPriceCourse(data1.getGeneralPrice());
+                        record.setListingStatusCourse(data1.getListingStatus());
+                        record.setCourseUid(data1.getId()+"");
+                    }
+                    break;
+                case 3:
+                    record.setBuyContent(record.getVipType());
+                    record.setGeneralPriceVip(record.getRealPayAmount());
+                    break;
+            }
+        }
+        record.setUid(record.getId().toString());
+        AppUser byId2 = remoteAppUserService.getAppUserById(record.getAppUserId()+"").getData();
+        AppUser byId3 = remoteAppUserService.getAppUserById(record.getGiveUserId()+"").getData();
+        if (Objects.nonNull(byId2)){
+            record.setUserName(byId2.getNickname());
+            record.setAvatar(byId2.getAvatar());
+            record.setCellPhone(byId2.getCellPhone());
+        }
+        if (Objects.nonNull(byId3)){
+            record.setUserNameGive(byId3.getNickname());
+            record.setAvatarGive(byId3.getAvatar());
+            record.setCellPhoneGive(byId3.getCellPhone());
+        }
+        if (record.getChangePriceOperator()!=null){
+            SysUser data = remoteUserService.getSysUserById(record.getChangePriceOperator() + "").getData();
+            record.setChangePriceOperatorName(data.getNickName()+"("+data.getUserName()+")");
+        }
+        if (record.getPayType()!=null){
+            List<OrderPaymentRecord> list = orderPaymentRecordService.list(new LambdaQueryWrapper<OrderPaymentRecord>()
+                    .eq(OrderPaymentRecord::getOrderId, record.getId())
+                    .orderByDesc(OrderPaymentRecord::getPaymentType)
+            );
+            if (record.getPayType() ==5 || record.getPayType()==6 || record.getPayType()==7){
+                if(record.getRealPayAmount()!=null){
+                    switch (record.getPayType()){
+                        case 5:
+                            if (!list.isEmpty()){
+                                OrderPaymentRecord orderPaymentRecord = list.get(1);
+                                OrderPaymentRecord orderPaymentRecord1 = list.get(0);
+                                switch (orderPaymentRecord.getPaymentType()){
+                                    case 1:
+                                        record.setPaymentType("微信(¥"+(orderPaymentRecord.getPayAmount()==null?"":orderPaymentRecord.getPayAmount())+")"
+                                        +" + 余额(¥"+orderPaymentRecord1.getPayAmount()+")");
+                                        break;
+                                    case 2:
+                                        record.setPaymentType("支付宝(¥"+(orderPaymentRecord.getPayAmount()==null?"":orderPaymentRecord.getPayAmount())+")"
+                                                +" + 余额(¥"+orderPaymentRecord1.getPayAmount()+")");
+
+                                        break;
+                                    case 3:
+                                        record.setPaymentType("内购(¥"+(orderPaymentRecord.getPayAmount()==null?"":orderPaymentRecord.getPayAmount())+")"
+                                                +" + 余额(¥"+orderPaymentRecord1.getPayAmount()+")");
+                                        break;
+                                }
+                            }
+                            break;
+                        case 6:
+                            record.setPaymentType("支付宝(¥"+record.getRealPayAmount()+")");
+                            break;
+                        case 7:
+                            record.setPaymentType("内购(¥"+record.getRealPayAmount()+")");
+                            break;
+                    }
+                }
+            }else{
+                if(record.getRealPayAmount()!=null){
+                    switch (record.getPayType()){
+                        case 1:
+                            record.setPaymentType("微信(¥"+record.getRealPayAmount()+")");
+                            break;
+                        case 2:
+                            record.setPaymentType("支付宝(¥"+record.getRealPayAmount()+")");
+                            break;
+                        case 3:
+                            record.setPaymentType("余额(¥"+record.getRealPayAmount()+")");
+                            break;
+                        case 4:
+                            record.setPaymentType("内购(¥"+record.getRealPayAmount()+")");
+                            break;
+                    }
+                }
+            }
+        }
+        return R.ok(record);
+    }
+    @GetMapping("/cancel")
+    @ApiOperation(value = "取消订单", notes = "管理后台-订单列表管理")
+    public R updateState(String uid) {
+        Order byId = orderService.getById(uid);
+        byId.setPaymentStatus(3);
+        orderService.updateById(byId);
+        return R.ok();
+    }
 }
 

--
Gitblit v1.7.1