Ver código fonte

个人网站批发订单、兑换码管理

zoujiajian 1 ano atrás
pai
commit
b230776741

+ 5 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -611,4 +611,9 @@ public interface Constant {
 	 * 提现默认支付宝
 	 */
 	String TAKE_MONEY_DEFAULT_ZFB = "take_money_default_zfb";
+
+	/**
+	 * 批发车票类型
+	 */
+	Integer WHOLESALE_TICKET_TYPE = 4;
 }

+ 103 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/WebWholesaleOrderDon.java

@@ -0,0 +1,103 @@
+package com.cyksj.model.entity;
+
+import cn.hutool.core.util.StrUtil;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: WebWholesaleOrderDon
+ * 创建者: JavaZou
+ * 创建时间:2025/6/4 16:12
+ */
+@Getter
+@Setter
+public class WebWholesaleOrderDon extends BaseEntity {
+	private Long userId;
+
+	private Integer num;
+
+	private BigDecimal money;
+
+	private BigDecimal refundMoney;
+
+	private String transactionId;
+
+	private String buyerId;
+
+	private String orderNo;
+
+	/**
+	 * 支付状态
+	 */
+	private Status status;
+
+	/**
+	 * 支付类型
+	 */
+	private Type type;
+
+	private Date payTime;
+
+	/**
+	 * 商户ID
+	 */
+	private String shopId;
+
+	/**
+	 * 支付标题
+	 */
+	private String payTitle;
+
+	/**
+	 * 批发规格ids
+	 */
+	private String skuIds;
+
+	public enum Status {
+		/**
+		 * 订单状态
+		 */
+		close("已关闭"),
+		noPayment("待付款"),
+		hasPayment("已付款"),
+		complete("已完成"),
+		refund("已退款"),
+		;
+
+		private String desc;
+
+		Status(String desc) {
+			this.desc = desc;
+		}
+
+		public String getDesc() {
+			return desc;
+		}
+	}
+
+	@Getter
+	@AllArgsConstructor
+	public enum Type{
+		WeChat("wechat","微信"),
+		ALI_PAY("zfb","支付宝"),
+		BALANCE("balance", "余额支付"),
+		PAYPAL("paypal","paypal支付"),
+		STRIPE("stripe","stripe支付")
+		;
+		String type;
+		String desc;
+
+		public static Type getType(String type) {
+			if (StrUtil.isEmpty(type)) {
+				return ALI_PAY;
+			}
+			return Arrays.stream(Type.values()).filter(tp -> tp.getType().equals(type)).findFirst().orElse(ALI_PAY);
+		}
+	}
+}

+ 53 - 0
netflix-dao/src/main/java/com/cyksj/model/views/WebWholesaleCodeDetailView.java

@@ -0,0 +1,53 @@
+package com.cyksj.model.views;
+
+import com.cyksj.model.entity.WebWholesaleOrderDon;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: WebWholesaleCodeDetailView
+ * 创建者: JavaZou
+ * 创建时间:2025/6/5 12:09
+ */
+@Getter
+@Setter
+@SearchBean(tables = "web_whole_sale_order_don wod inner join web_whole_sale_order_don_code_relate odr on wod.id = odr.oder_id" +
+		" left join user u on u.id = odr.dh_user_id")
+public class WebWholesaleCodeDetailView {
+	@DbField("wod.user_id")
+	private Long userId;
+
+	@DbField("wod.id")
+	private Long orderId;
+
+	@DbField("wod.order_no")
+	private String orderNo;
+
+	@DbField("odr.dh_user_id")
+	private Long dhUserId;
+
+	@DbField("u.nickname")
+	private String nickname;
+
+	/**
+	 * 支付状态
+	 */
+	@DbField("wod.status")
+	@JsonIgnore
+	private WebWholesaleOrderDon.Status status;
+
+	/**
+	 * 支付标题
+	 */
+	@DbField("wod.pay_title")
+	private String payTitle;
+
+	@DbField("odr.update_time")
+	private Date updateTime;
+}

+ 52 - 0
netflix-dao/src/main/java/com/cyksj/model/views/WebWholesaleOrderView.java

@@ -0,0 +1,52 @@
+package com.cyksj.model.views;
+
+import com.cyksj.model.entity.WebWholesaleOrderDon;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: WebWholesaleOrderView
+ * 创建者: JavaZou
+ * 创建时间:2025/6/5 12:03
+ */
+@Getter
+@Setter
+@SearchBean(tables = "web_whole_sale_order_don wod")
+public class WebWholesaleOrderView {
+	@DbField("wod.user_id")
+	private Long userId;
+
+	@DbField("wod.money")
+	private BigDecimal money;
+
+	@DbField("wod.refund_money")
+	private BigDecimal refundMoney;
+
+	@DbField("wod.transaction_id")
+	private String transactionId;
+
+	@DbField("wod.order_no")
+	private String orderNo;
+
+	/**
+	 * 支付状态
+	 */
+	@DbField("wod.status")
+	private WebWholesaleOrderDon.Status status;
+
+	@DbField("wod.pay_time")
+	private Date payTime;
+
+	/**
+	 * 支付标题
+	 */
+	@DbField("wod.pay_title")
+	private String payTitle;
+
+}

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -1299,6 +1299,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 		Number number = beanSearcher.searchCount(RenewalView.class, MapUtils.builder()
 				.field(RenewalView::getUserId, userIdList).op(Operator.InList)
 				.field(RenewalView::getStatus, GroupsRelation.Status.validity.name())
+				.field(RenewalView::getAqType, Constant.WHOLESALE_TICKET_TYPE).op(Operator.NotEqual)
 				.field(RenewalView::getIsMirror, true)
 				.build());
 		if (number.intValue() == 0) {
@@ -1615,6 +1616,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 						.field(RenewalView::getRelationId, ticket.getRelationId()).op(Operator.NotEqual)
 						.field(RenewalView::getSkuId, skuId)
 						.field(RenewalView::getUserId, userIds).op(Operator.InList)
+						.field(RenewalView::getAqType, Constant.WHOLESALE_TICKET_TYPE).op(Operator.NotEqual)
 						.field(RenewalView::getExpiryTime, ticket.getExpiryTime()).op(Operator.GreaterThan)
 						.build());
 				if (number.intValue() == 0) {

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/vip/impl/VipFrontServiceImpl.java

@@ -13,6 +13,7 @@ import com.cyksj.model.dto.VipDeductDto;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.response.VipUserPageResp;
+import com.cyksj.model.views.RenewalView;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.vip.VipFrontService;
 import com.ejlchina.searcher.BeanSearcher;
@@ -125,6 +126,7 @@ public class VipFrontServiceImpl implements VipFrontService {
 				.field(GroupsRelationView::getUserId, userIdList).op(Operator.InList)
 				.field(GroupsRelationView::getIsVip, false)
 				.field(GroupsRelationView::getExpiryTime, DateTime.now()).op(Operator.GreaterThan)
+				.field(RenewalView::getAqType, Constant.WHOLESALE_TICKET_TYPE).op(Operator.NotEqual)
 				.orderBy(GroupsRelationView::getExpiryTime).desc()
 				.build());
 		Set<Long> deductSkuIds = null;

+ 57 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/wholesale/WholesaleCodeController.java

@@ -0,0 +1,57 @@
+package com.cyksj.web.controller.manage.wholesale;
+
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.model.entity.WebWholesaleOrderDon;
+import com.cyksj.model.views.WebWholesaleCodeDetailView;
+import com.cyksj.model.views.WebWholesaleOrderView;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.util.MapUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: WholesaleCodeController
+ * 创建者: JavaZou
+ * 创建时间:2025/6/4 16:31
+ * 兑换码管理
+ */
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/manage/wholesale/code")
+public class WholesaleCodeController {
+	private final BeanSearcher beanSearcher;
+
+	private final HttpServletRequest request;
+
+	/**
+	 * 兑换码 明细
+	 */
+	@GetMapping("/get/detail")
+	public Result<SearchResult<WebWholesaleCodeDetailView>> getCodeDetail() {
+		SearchResult<WebWholesaleCodeDetailView> search = beanSearcher.search(WebWholesaleCodeDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(WebWholesaleCodeDetailView::getStatus, WebWholesaleOrderDon.Status.complete.name())
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 兑换码订单列表
+	 */
+	@GetMapping("/get/order")
+	public Result<SearchResult<WebWholesaleOrderView>> getOrders() {
+		SearchResult<WebWholesaleOrderView> search = beanSearcher.search(WebWholesaleOrderView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(WebWholesaleOrderView::getStatus, WebWholesaleOrderDon.Status.complete.name())
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+}

+ 2 - 0
netflix-web/src/main/java/com/cyksj/web/controller/user/UserController.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.URLUtil;
 import cn.hutool.extra.servlet.ServletUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.annotation.NoSubmit;
+import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
@@ -162,6 +163,7 @@ public class UserController {
                 .field(RenewalView::getUserId, userIdList).op(Operator.InList)
                 .field(RenewalView::getStatus, List.of("validity", "overdue", "outside")).op(Operator.InList)
                 .field(RenewalView::getIsVip, false)
+                .field(RenewalView::getAqType, Constant.WHOLESALE_TICKET_TYPE).op(Operator.NotEqual)
                 .orderBy(RenewalView::getExpiryTime).asc()
                 .onlySelect(RenewalView::getExpiryTime)
                 .build());