Browse Source

no message

xingzai 11 months ago
parent
commit
3796131bb7
3 changed files with 131 additions and 2 deletions
  1. 6 2
      models/db.go
  2. 119 0
      services/order.go
  3. 6 0
      services/task.go

+ 6 - 2
models/db.go

@@ -203,7 +203,11 @@ func init() {
 // initOrder 买方研选订单模块
 func initOrder() {
 	orm.RegisterModel(
-		new(order.CygxOrder),       //订单表
-		new(order.CygxOrderAction), //订单操表
+		new(order.CygxOrder),             //订单表
+		new(order.CygxOrderAction),       //订单操表
+		new(order.CygxOrderUserCard),     //用户持卡表
+		new(order.CygxOrderUserCardLog),  //用户持卡日志表
+		new(order.CygxOrderPayment),      //支付记录表
+		new(order.CygxOrderVirtualAsset), //用户虚拟资产表(所购买的单篇报告,活动等)
 	)
 }

+ 119 - 0
services/order.go

@@ -44,8 +44,13 @@ func CancelCygxOrder(cont context.Context) (err error) {
 	return
 }
 
+//func init() {
+//	HandleOrderRefundHandleask()
+//}
+
 // GetQueryOrderByOutTradeNoTask 定时任务主动获取订单支付状态
 func GetQueryOrderByOutTradeNoTask(cont context.Context) (err error) {
+	//func GetQueryOrderByOutTradeNoTask() (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println(err)
@@ -166,6 +171,7 @@ func HandleOrderHandle(itemCallback *Transaction) {
 	return
 }
 
+// 添加操作记录
 func AddCygxOrderPayment(itemCallback *Transaction) {
 	var err error
 	defer func() {
@@ -191,3 +197,116 @@ func AddCygxOrderPayment(itemCallback *Transaction) {
 	}
 	return
 }
+
+// 定时任务处理退款回调
+func HandleOrderRefundHandleask(cont context.Context) (err error) {
+	//func HandleOrderRefundHandleask() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("自动取消十分钟之内没有付款的的订单 CancelCygxOrder ,err:", err.Error()), 2)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	//endTime := time.Now().Add(-10 * time.Minute)
+	condition = ` AND order_status = 4    ` //获取十分钟之内待支付的订单
+	//pars = append(pars, endTime)
+	orderList, e := order.GetCygxOrderList(condition, pars, 0, 999)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxOrderList, Err: " + e.Error())
+		return
+	}
+	fmt.Println(len(orderList))
+	if len(orderList) == 0 {
+		return
+	}
+	//订单量不大,先这么写吧
+	for _, v := range orderList {
+		tradeState, statusCode, itemResp := GetQueryOrderByOutTradeNo(v.OrderCode)
+		if tradeState == "REFUND" && statusCode == 200 {
+			go HandleOrderRefundHandle(itemResp)
+		}
+
+	}
+	return
+}
+
+// 处理退款订单回调
+func HandleOrderRefundHandle(itemCallback *Transaction) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("处理退款订单回调信息失败 HandleOrderRefundHandle, err:", err.Error()), 2)
+		}
+	}()
+	outTradeNo := itemCallback.OutTradeNo
+	orderDetail, e := order.GetCygxOrderDetailByOrderCode(outTradeNo)
+	if e != nil {
+		err = errors.New("GetCygxOrderDetailByOrderCode, Err: " + e.Error())
+		return
+	}
+
+	//go AddCygxOrderPayment(itemCallback) // 记录支付交易信息
+
+	//修改过状态的不再二次处理
+	if orderDetail.OrderStatus == 3 {
+		return
+	}
+
+	itemOrder := new(order.CygxOrder)
+	itemOrder.OrderCode = itemCallback.OutTradeNo
+	itemOrder.RefundTime = itemCallback.SuccessTime
+	itemOrder.RefundMoney = float64(float64(itemCallback.Amount.PayerTotal) / 100) // 金额分转换处理
+	itemOrder.OrderStatus = 3
+
+	//文章处理逻辑  	OrderType        int       `comment:"订单类型,1:畅读卡订单,2:单场付费订单"`
+	if orderDetail.OrderType == 1 {
+		itemUserCard := new(order.CygxOrderUserCard)
+		itemUserCard.OrderCode = orderDetail.OrderCode
+		itemUserCard.UserId = orderDetail.UserId
+		itemUserCard.Mobile = orderDetail.Mobile
+		itemUserCard.Email = orderDetail.Email
+		itemUserCard.CompanyId = orderDetail.CompanyId
+		itemUserCard.CompanyName = orderDetail.CompanyName
+		itemUserCard.RealName = orderDetail.RealName
+		itemUserCard.SellerName = orderDetail.SellerName
+		itemUserCard.CreateTime = time.Now()
+		itemUserCard.ModifyTime = time.Now()
+		itemUserCard.RegisterPlatform = orderDetail.RegisterPlatform
+
+		if orderDetail.GoodsId == 1 {
+			itemUserCard.CardType = "日卡"
+		} else {
+			itemUserCard.CardType = "月卡"
+		}
+		e = order.RemoveCygxOrderUserCard(itemUserCard, itemOrder) // 移除用户
+		if e != nil {
+			err = errors.New("RemoveCygxOrderUserCard, Err: " + e.Error())
+			return
+		}
+	} else if orderDetail.OrderType == 2 {
+		//如果是活动,把单场付费信息的活动写入 用户虚拟资产表
+		itemOrderVirtualAsset := new(order.CygxOrderVirtualAsset)
+		itemOrderVirtualAsset.OrderCode = orderDetail.OrderCode
+		itemOrderVirtualAsset.UserId = orderDetail.UserId
+		itemOrderVirtualAsset.Mobile = orderDetail.Mobile
+		itemOrderVirtualAsset.Email = orderDetail.Email
+		itemOrderVirtualAsset.CompanyId = orderDetail.CompanyId
+		itemOrderVirtualAsset.CompanyName = orderDetail.CompanyName
+		itemOrderVirtualAsset.RealName = orderDetail.RealName
+		itemOrderVirtualAsset.SellerName = orderDetail.SellerName
+		itemOrderVirtualAsset.Source = orderDetail.Source
+		itemOrderVirtualAsset.SourceId = orderDetail.SourceId
+		itemOrderVirtualAsset.CreateTime = time.Now()
+		itemOrderVirtualAsset.ModifyTime = time.Now()
+		e = order.RemoveCygxOrderVirtualAsset(itemOrderVirtualAsset, itemOrder)
+		if e != nil {
+			err = errors.New("AddCygxOrderVirtualAsset, Err: " + e.Error())
+			return
+		}
+	}
+	fmt.Println(orderDetail.Source)
+	return
+}

+ 6 - 0
services/task.go

@@ -134,6 +134,12 @@ func Task() {
 		cancelCygxOrder := task.NewTask("CancelCygxOrder", "0 */1 * * * *", CancelCygxOrder)
 		task.AddTask("十分钟内未付款的订单自动取消", cancelCygxOrder) //十分钟内未付款的订单自动取消
 
+		getQueryOrderByOutTradeNoTask := task.NewTask("getQueryOrderByOutTradeNoTask", "0 */1 * * * *", GetQueryOrderByOutTradeNoTask)
+		task.AddTask("定时任务主动获取订单支付状态", getQueryOrderByOutTradeNoTask) //定时任务主动获取订单支付状态
+
+		handleOrderRefundHandleask := task.NewTask("HandleOrderRefundHandleask", "0 */1 * * * *", HandleOrderRefundHandleask)
+		task.AddTask("定时任务处理退款回调", handleOrderRefundHandleask) //定时任务处理退款回调
+
 	}
 	//if utils.RunMode != "release" {
 	//	getArticleListByApi := task.NewTask("getArticleListByApi", "0 */60 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章