From 03bd93bf72ea24c2134c08bff69a3671202759ff Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 15 Sep 2025 13:48:44 +0800
Subject: [PATCH] feat(mall): 优化活动订单列表接口和导出功能
---
src/main/java/cc/mrbird/febs/mall/vo/activity/AdminHappyActivityOrderItemVo.java | 36 +++++++++
src/main/resources/mapper/modules/HappyActivityOptionMapper.xml | 30 +++++++
src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java | 1
src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java | 86 +++++++++++++++++++++
src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java | 5 +
src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java | 24 +++++-
src/main/resources/templates/febs/views/modules/votesActivity/orderList.html | 7 +
src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java | 4 +
8 files changed, 187 insertions(+), 6 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java b/src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java
index cc6d996..d0276ef 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java
@@ -18,6 +18,7 @@
import cc.mrbird.febs.mall.entity.HappyActivityOrder;
import cc.mrbird.febs.mall.service.IAdminHappyActivityService;
import cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderCheckVo;
+import cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderItemVo;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -242,6 +243,17 @@
}
/**
+ * 订单
+ * @return
+ */
+ @GetMapping("activityOrderListV2")
+ public FebsResponse activityOrderListV2(AdminHappyActivityOrderDto dto, QueryRequest request) {
+
+ Map<String, Object> data = getDataTable(adminHappyActivityService.activityOrderListV2(dto, request));
+ return new FebsResponse().success().data(data);
+ }
+
+ /**
* 订单-手动核销
*/
@PostMapping("checkOrder")
@@ -334,18 +346,22 @@
String title = happyActivity.getName() + "的订单";
orderSheet.setTitle(title);
- String[] header = {"序号","用户", "编号", "单价", "数量","总价","使用状态", "支付方式"};
+ String[] header = {"序号","用户", "报名人", "报名电话", "报名地址", "编号", "单价", "数量","总价","使用状态", "支付方式"};
orderSheet.setHeaders(header);
- List<HappyActivityOrder> orderListForExport = adminHappyActivityService.getOrderListForExport(params);
+// List<HappyActivityOrder> orderListForExport = adminHappyActivityService.getOrderListForExport(params);
+ List<AdminHappyActivityOrderItemVo> orderListForExport = adminHappyActivityService.getOrderListForExportV2(params);
List<List<Object>> list = new ArrayList<>();
if (orderListForExport.size() > 0) {
int i = 0;
- for (HappyActivityOrder item : orderListForExport) {
+ for (AdminHappyActivityOrderItemVo item : orderListForExport) {
i++;
List<Object> temp = new ArrayList<>();
temp.add(i);
- temp.add(item.getName());
+ temp.add(item.getMemberName());
+ temp.add(item.getConnectName());
+ temp.add(item.getConnectPhone());
+ temp.add(item.getConnectAddress());
temp.add(item.getOrderNo());
temp.add(item.getPrice());
temp.add(item.getNumCnt());
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java
index 49564c7..ab882d5 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java
@@ -4,12 +4,14 @@
import cc.mrbird.febs.mall.entity.HappyActivity;
import cc.mrbird.febs.mall.dto.ApiActivityInfoDto;
import cc.mrbird.febs.mall.entity.HappyActivityOrder;
+import cc.mrbird.febs.mall.entity.HappyActivityOrderItem;
import cc.mrbird.febs.mall.vo.ApiActivityInfoVo;
import cc.mrbird.febs.mall.dto.ApiVoteRecordInPageDto;
import cc.mrbird.febs.mall.vo.ApiActivityOptionListVo;
import cc.mrbird.febs.mall.vo.ApiVoteRecordInPageVo;
import cc.mrbird.febs.mall.vo.activity.AdminActivityCommentVo;
import cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderCheckVo;
+import cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderItemVo;
import cc.mrbird.febs.mall.vo.activity.ApiActivityCommentVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -32,6 +34,8 @@
Page<HappyActivityOrder> selectOrderInPage(Page<HappyActivityOrder> page, @Param("record")AdminHappyActivityOrderDto dto);
+ Page<AdminHappyActivityOrderItemVo> selectOrderItemInPage(Page<AdminHappyActivityOrderItemVo> page, @Param("record")AdminHappyActivityOrderDto dto);
+
Page<ApiActivityOptionListVo> getVoteOptionRecordInPage(Page<ApiActivityOptionListVo> page, @Param("record")ApiVoteOptionRecordInPageDto dto);
List<ApiActivityCommentVo> selectActivityCommentPage(Page<ApiActivityCommentVo> page, @Param("record")ApiActivityCommentDto dto);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java
index 3b4041c..ca16cd4 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java
@@ -7,6 +7,7 @@
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.vo.activity.AdminActivityCommentVo;
import cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderCheckVo;
+import cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderItemVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -56,6 +57,8 @@
IPage<HappyActivityOrder> activityOrderList(AdminHappyActivityOrderDto dto, QueryRequest request);
+ IPage<AdminHappyActivityOrderItemVo> activityOrderListV2(AdminHappyActivityOrderDto dto, QueryRequest request);
+
FebsResponse checkOrder(List<Long> dto);
FebsResponse activityOrderDel(Long id);
@@ -68,6 +71,8 @@
List<HappyActivityOrder> getOrderListForExport(Map<String, String> params);
+ List<AdminHappyActivityOrderItemVo> getOrderListForExportV2(Map<String, String> params);
+
IPage<AdminHappyActivityOrderCheckVo> activityOrderCheckList(AdminHappyActivityOrderCheckDto dto, QueryRequest request);
FebsResponse checkOrderItem(List<Long> dto);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
index 45e798e..eba557d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
@@ -13,6 +13,7 @@
import cc.mrbird.febs.mall.vo.AdminMallGoodsCommentVo;
import cc.mrbird.febs.mall.vo.activity.AdminActivityCommentVo;
import cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderCheckVo;
+import cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderItemVo;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
@@ -42,6 +43,7 @@
private final HappyActivityOrderMapper happyActivityOrderMapper;
private final HappyActivityCommentMapper happyActivityCommentMapper;
private final HappyActivityOrderItemMapper happyActivityOrderItemMapper;
+ private final HappyActivityConnectMapper happyActivityConnectMapper;
private final HappyFollowMapper happyFollowMapper;
private final MallMemberMapper mallMemberMapper;
private final AgentProducer agentProducer;
@@ -378,6 +380,13 @@
}
@Override
+ public IPage<AdminHappyActivityOrderItemVo> activityOrderListV2(AdminHappyActivityOrderDto dto, QueryRequest request) {
+ Page<AdminHappyActivityOrderItemVo> page = new Page<>(request.getPageNum(), request.getPageSize());
+ Page<AdminHappyActivityOrderItemVo> adminOptionVoIPage = this.baseMapper.selectOrderItemInPage(page, dto);
+ return adminOptionVoIPage;
+ }
+
+ @Override
public FebsResponse checkOrder(List<Long> ids) {
if (CollUtil.isEmpty(ids)){
@@ -489,6 +498,83 @@
}
@Override
+ public List<AdminHappyActivityOrderItemVo> getOrderListForExportV2(Map<String, String> params) {
+ List<AdminHappyActivityOrderItemVo> list = new ArrayList<>();
+
+ LambdaQueryWrapper<HappyActivityOrder> queryWrapper = new LambdaQueryWrapper<>();
+ if(ObjectUtil.isNotEmpty(params.get("activityId"))){
+ queryWrapper.eq(HappyActivityOrder::getActivityId, Long.valueOf(params.get("activityId")));
+ }
+ List<Integer> stateList = Arrays.asList(StateUpDownEnum.ORDER_STATE_WAIT_USE.getCode(), StateUpDownEnum.ORDER_STATE_USED.getCode());
+ queryWrapper.in(HappyActivityOrder::getState, stateList);
+ queryWrapper.eq(HappyActivityOrder::getDeleteFlag, StateUpDownEnum.DOWN.getCode());
+ queryWrapper.orderByDesc(HappyActivityOrder::getState);
+ queryWrapper.orderByDesc(HappyActivityOrder::getId);
+ List<HappyActivityOrder> happyActivityOrders = happyActivityOrderMapper.selectList(queryWrapper);
+
+ if(CollUtil.isNotEmpty(happyActivityOrders)){
+
+ Map<Long, HappyActivityOrder> happyActivityOrderMap = happyActivityOrders.stream().collect(Collectors.toMap(HappyActivityOrder::getId, order -> order));
+
+ Set<Long> orderIds = happyActivityOrders.stream().map(HappyActivityOrder::getId).collect(Collectors.toSet());
+ List<HappyActivityOrderItem> happyActivityOrderItems = happyActivityOrderItemMapper.selectList(
+ new LambdaQueryWrapper<HappyActivityOrderItem>()
+ .select(HappyActivityOrderItem::getConnectId)
+ .in(HappyActivityOrderItem::getOrderId, orderIds)
+ );
+ Set<Long> connectIds = happyActivityOrderItems.stream().map(HappyActivityOrderItem::getConnectId).collect(Collectors.toSet());
+ List<HappyActivityConnect> happyActivityConnects = happyActivityConnectMapper.selectList(
+ new LambdaQueryWrapper<HappyActivityConnect>()
+ .select(HappyActivityConnect::getId,HappyActivityConnect::getName,HappyActivityConnect::getPhone,HappyActivityConnect::getAddress)
+ .in(HappyActivityConnect::getId, connectIds)
+ );
+ Map<Long, HappyActivityConnect> happyActivityConnectMap = happyActivityConnects.stream().collect(Collectors.toMap(HappyActivityConnect::getId, happyActivityConnect -> happyActivityConnect));
+
+
+ Set<Long> collect = happyActivityOrders.stream().map(HappyActivityOrder::getMemberId).collect(Collectors.toSet());
+ List<MallMember> mallMembers = mallMemberMapper.selectList(
+ new LambdaQueryWrapper<MallMember>()
+ .select(MallMember::getId,MallMember::getName)
+ .in(MallMember::getId, collect)
+ );
+ Map<Long, MallMember> mallMemberMap = mallMembers.stream().collect(Collectors.toMap(MallMember::getId, mallMember -> mallMember));
+
+ happyActivityOrderItems.forEach(happyActivityOrderItem -> {
+ AdminHappyActivityOrderItemVo vo = new AdminHappyActivityOrderItemVo();
+ HappyActivityConnect happyActivityConnect = happyActivityConnectMap.get(happyActivityOrderItem.getConnectId());
+ vo.setConnectName(happyActivityConnect.getName());
+ vo.setConnectPhone(happyActivityConnect.getPhone());
+ vo.setConnectAddress(happyActivityConnect.getAddress());
+
+ HappyActivityOrder happyActivityOrder = happyActivityOrderMap.get(happyActivityOrderItem.getOrderId());
+ vo.setId(happyActivityOrder.getId());
+ vo.setCreatedTime(happyActivityOrder.getCreatedTime());
+ vo.setMemberId(happyActivityOrder.getMemberId());
+ vo.setActivityId(happyActivityOrder.getActivityId());
+ vo.setPrice(happyActivityOrder.getPrice());
+ vo.setNumCnt(happyActivityOrder.getNumCnt());
+ vo.setAmount(happyActivityOrder.getAmount());
+ vo.setPayState(happyActivityOrder.getPayState());
+ vo.setPayType(happyActivityOrder.getPayType());
+ vo.setPayTime(happyActivityOrder.getPayTime());
+ vo.setDeleteFlag(happyActivityOrder.getDeleteFlag());
+ vo.setOrderNo(happyActivityOrder.getOrderNo());
+ vo.setPayOrderNo(happyActivityOrder.getPayOrderNo());
+ vo.setWxOrderNo(happyActivityOrder.getWxOrderNo());
+ vo.setState(happyActivityOrder.getState());
+ vo.setFailTime(happyActivityOrder.getFailTime());
+ MallMember mallMember = mallMemberMap.get(happyActivityOrderItem.getMemberId());
+ if (ObjectUtil.isNotEmpty(mallMember)){
+ vo.setMemberName(mallMember.getName());
+ }else{
+ vo.setMemberName("");
+ }
+ });
+ }
+ return list;
+ }
+
+ @Override
public IPage<AdminHappyActivityOrderCheckVo> activityOrderCheckList(AdminHappyActivityOrderCheckDto dto, QueryRequest request) {
Page<AdminHappyActivityOrderCheckVo> page = new Page<>(request.getPageNum(), request.getPageSize());
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
index 90d7ab9..b358c71 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
@@ -508,6 +508,7 @@
}
@Override
+ @Transactional
public FebsResponse createOrder(ApiCreateOrderDto dto) {
Long memberId = LoginUserUtil.getLoginUser().getId();
if(CollUtil.isEmpty(dto.getConnectIds())){
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/activity/AdminHappyActivityOrderItemVo.java b/src/main/java/cc/mrbird/febs/mall/vo/activity/AdminHappyActivityOrderItemVo.java
new file mode 100644
index 0000000..0f49309
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/activity/AdminHappyActivityOrderItemVo.java
@@ -0,0 +1,36 @@
+package cc.mrbird.febs.mall.vo.activity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+@Data
+public class AdminHappyActivityOrderItemVo {
+
+ private Long id;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createdTime;
+ private Long memberId;
+ private Long activityId;
+ private BigDecimal price;
+ private Integer numCnt;
+ private BigDecimal amount;
+ private Integer payState;
+ private Integer payType;
+ private Date payTime;
+ private Integer deleteFlag;
+ private String orderNo;
+ private String payOrderNo;
+ private String wxOrderNo;
+ private Integer state;
+ private Date failTime;
+
+ private String connectName;
+ private String connectPhone;
+ private String connectAddress;
+
+ private String memberName;//
+ private String activityName;//
+}
diff --git a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml
index 05101e2..277af56 100644
--- a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml
+++ b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml
@@ -110,6 +110,36 @@
order by a.id desc
</select>
+ <select id="selectOrderItemInPage" resultType="cc.mrbird.febs.mall.vo.activity.AdminHappyActivityOrderItemVo">
+ select
+ a.*,
+ e.name as connectName,
+ e.phone as connectPhone,
+ e.address as connectAddress,
+ b.name as memberName,
+ c.name as activityName
+ from happy_activity_order_item d
+ left join happy_activity_connect e on e.id = d.connect_id
+ left join happy_activity_order a on a.id = d.order_id
+ left join mall_member b on a.member_id = b.id
+ left join happy_activity c on a.activity_id = c.id
+ <where>
+ and a.DELETE_FLAG = 0
+ <if test="record != null">
+ <if test="record.name != null and record.name != ''">
+ and b.name like CONCAT('%', CONCAT(#{record.name}, '%'))
+ </if>
+ <if test="record.state != null">
+ and a.state=#{record.state}
+ </if>
+ <if test="record.activityId != null">
+ and a.activity_id=#{record.activityId}
+ </if>
+ </if>
+ </where>
+ order by a.id desc
+ </select>
+
<select id="getVoteOptionRecordInPage" resultType="cc.mrbird.febs.mall.vo.ApiActivityOptionListVo">
diff --git a/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html b/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
index 48408fe..0c4505b 100644
--- a/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
@@ -257,16 +257,19 @@
tableIns = febs.table.init({
elem: $view.find('table'),
id: 'orderActivityTable',
- url: ctx + 'admin/happyActivity/activityOrderList',
+ url: ctx + 'admin/happyActivity/activityOrderListV2',
toolbar:"#orderActivityToolbar",
defaultToolbar:[],
cols: [[
{type: 'checkbox'},
{type: 'numbers', title: '', width: 80},
{title: '操作', toolbar: '#orderActivityOption', minWidth: 200, align: 'center'},
- {field: 'name', title: '名称', minWidth: 100,align:'center'},
+ {field: 'memberName', title: '名称', minWidth: 100,align:'center'},
{field: 'orderNo', title: '订单编号', minWidth: 100,align:'center'},
{field: 'activityName', title: '活动名称', minWidth: 100,align:'center'},
+ {field: 'connectName', title: '报名人', minWidth: 100,align:'center'},
+ {field: 'connectPhone', title: '报名电话', minWidth: 100,align:'center'},
+ {field: 'connectAddress', title: '报名地址', minWidth: 100,align:'center'},
{field: 'price', title: '单价', minWidth: 100,align:'center'},
{field: 'numCnt', title: '数量', minWidth: 100,align:'center'},
{field: 'amount', title: '总价', minWidth: 100,align:'center'},
--
Gitblit v1.9.1