Explorar el Código

导出会员订单

zoujiajian hace 10 meses
padre
commit
1996f69732

+ 165 - 0
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelVipOrderDonData.java

@@ -0,0 +1,165 @@
+package com.cyksj.model.excel;
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.cyksj.model.entity.VipOrderDon;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: ExcelVipOrderDonData
+ * 创建者: JavaZou
+ * 创建时间:2025/10/13 14:11
+ */
+@Getter
+@Setter
+@SearchBean(tables = "vip_order_don o left join user u on u.id = o.user_id",
+		where = ":condition:"
+)
+@ExcelIgnoreUnannotated
+public class ExcelVipOrderDonData {
+
+	@DbField("o.id")
+	private Long id;
+
+	@DbField("o.order_no")
+	@ExcelProperty("订单号")
+	private String orderNo;
+
+	@DbField("o.created_time")
+	@ExcelProperty("创建时间")
+	private Date createdTime;
+
+	@DbField("o.user_id")
+	@ExcelProperty("用户ID")
+	private Long userId;
+
+	@DbField("u.nickname")
+	@ExcelProperty("用户名")
+	private String nickname;
+
+	@DbField("o.num")
+	private Integer num;
+
+	@ExcelProperty("开通时长")
+	private String numStr;
+
+	@ExcelProperty("减免金额")
+	private String reduceStr;
+
+	@DbField("o.money/100")
+	@ExcelProperty("金额")
+	private BigDecimal money;
+
+	@DbField("o.status")
+	private VipOrderDon.Status status;
+
+	@DbField("o.status")
+	@ExcelProperty("状态")
+	private String statusStr;
+
+	@DbField("o.refund_money/100")
+	@ExcelProperty("退款金额")
+	private BigDecimal refundMoney;
+
+	@DbField("o.refund_balance/100")
+	@ExcelProperty("退款余额")
+	private BigDecimal refundBalance;
+
+	@DbField("if(o.popularize_id is null,null,(select name from channel_popularize cp where cp.id = o.popularize_id limit 1))")
+	@ExcelProperty("渠道")
+	private String channel = "自然渠道";
+
+	@DbField("o.order_type")
+	private Integer orderType;
+
+	@ExcelProperty("订单类型")
+	private String orderTypeStr;
+
+	@DbField("o.transaction_id")
+	private String transactionId;
+
+	@DbField("case when u.login_phone != '' then 'phone' when u.email != '' then 'email' when u.open_id != '' then 'wechat' else 'wechat' end")
+	private String register;
+
+	@DbField("case when u.login_phone != '' then concat('手机号',login_phone) when u.email != '' then concat('邮箱',email) when u.open_id != '' then '微信授权' else '微信授权' end")
+	@ExcelProperty("注册方式")
+	private String registerStr;
+
+	/**
+	 * 登录注册手机号
+	 */
+	@DbField("u.login_phone")
+	private String loginPhone;
+
+	/**
+	 * 登录注册邮箱
+	 */
+	@DbField("u.email")
+	private String email;
+
+	/**
+	 * 实际抵扣金额
+	 */
+	@DbField("o.actually_deduct_money")
+	private BigDecimal actuallyDeductMoney = BigDecimal.ZERO;
+
+	@DbField("o.balance")
+	private BigDecimal balance;
+
+	@DbField("o.refund_desc")
+	private String refundDesc;
+
+	@DbField("o.type")
+	private VipOrderDon.Type type;
+
+	@DbField("o.popularize_id")
+	private Long popularizeId;
+
+	@DbField("o.pay_time")
+	private Date payTime;
+
+	@DbField("o.pay_title")
+	private String payTitle;
+
+	/**
+	 * 银河币
+	 */
+	@DbField("select galaxy_coin from order_don_galaxy_coin_record ord where ord.order_id = o.id limit 1")
+	private BigDecimal galaxyCoin;
+
+	public String getNumStr() {
+		return this.num + "个月";
+	}
+
+	public String getStatusStr() {
+		return this.status.getDesc();
+	}
+
+	public String getReduceStr() {
+		String str = StrUtil.EMPTY;
+		if (galaxyCoin != null) {
+			galaxyCoin = galaxyCoin.divide(BigDecimal.valueOf(100));
+			str += String.format("使用%s银河币,抵扣%s", galaxyCoin, galaxyCoin.divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN));
+		}
+		if (actuallyDeductMoney != null && actuallyDeductMoney.compareTo(BigDecimal.ZERO) > 0) {
+			if (str.length() > 0) {
+				str += "\n";
+			}
+			str += String.format("车票抵扣¥%s", actuallyDeductMoney.subtract(money).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN));
+		}
+		return str;
+	}
+
+	public String getOrderTypeStr() {
+		return this.orderType == 1 ? "普通" : "续费";
+	}
+}

+ 13 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/vip/CmsVipController.java

@@ -1,6 +1,7 @@
 package com.cyksj.web.controller.manage.vip;
 
 import cn.dev33.satoken.stp.StpUtil;
+import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
@@ -8,11 +9,13 @@ import com.cyksj.mapper.OrderDonGalaxyCoinRecordMapper;
 import com.cyksj.mapper.channel.ChannelPopularizeMapper;
 import com.cyksj.model.entity.OrderDonGalaxyCoinRecord;
 import com.cyksj.model.entity.VipGoodsSku;
+import com.cyksj.model.excel.ExcelVipOrderDonData;
 import com.cyksj.model.request.OrderRefundReq;
 import com.cyksj.model.views.CmsVipOrderDonView;
 import com.cyksj.model.views.VipGoodsSkuView;
 import com.cyksj.service.mange.vip.CmsVipOrderService;
 import com.cyksj.service.mange.vip.VipCommonService;
+import com.cyksj.web.util.EasyExcelUtils;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.util.MapUtils;
@@ -22,6 +25,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Optional;
 
@@ -101,4 +105,13 @@ public class CmsVipController {
 		vipCommonService.setVipGoodsSku(vipGoodsSkus);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
+
+	/**
+	 * 导出订单
+	 */
+	@GetMapping("/export")
+	public void exportOrders(HttpServletResponse response) {
+		List<ExcelVipOrderDonData> list = beanSearcher.searchAll(ExcelVipOrderDonData.class, MapUtils.flatBuilder(request.getParameterMap()).build());
+		EasyExcelUtils.createExcelStreamMutilByEasyExcel(response, ExcelVipOrderDonData.class, list, "会员订单列表", "会员订单列表", ExcelTypeEnum.XLSX, null);
+	}
 }