Forráskód Böngészése

Merge branch 'mfyx_2.0' of http://8.136.199.33:3000/cxzhang/hongze_mfyx into debug

xingzai 1 éve
szülő
commit
c13be3029b

+ 6 - 6
controllers/wechat.go

@@ -483,14 +483,14 @@ func (this *WechatCommonController) WxpayRefundsNotify() {
 	item.CreateTime = time.Now()
 	//item.Body = jsonCompany
 	item.Result = string(body)
-	fmt.Println(item.Result)
+	//fmt.Println(item.Result)
 	//return
 	go models.AddCygxShanghaiCompanyLog(item)
-	//itemNotify := services.WxDecodeNotify(body)
-	//if itemNotify.OutTradeNo != "" {
-	//	go services.HandleOrderHandle(itemNotify)
-	//}
-	//br.Data = itemNotify
+	itemNotify := services.WxDecodeNotify(body)
+	if itemNotify.OutTradeNo != "" {
+		//go services.HandleOrderRefundHandle(itemNotify)
+	}
+	br.Data = itemNotify
 	br.Ret = 200
 	br.Success = true
 }

+ 1 - 0
models/order/order.go

@@ -46,6 +46,7 @@ type CygxOrder struct {
 	Point            int       `comment:"订单消耗积分"`
 	PointMoney       float64   `comment:"订单消耗积分抵多少钱"`
 	PayMoney         float64   `comment:"订单实付金额"`
+	RefundTime       time.Time `comment:"订单退款时间"`
 	RefundMoney      float64   `comment:"订单退款金额"`
 	OrderStatus      int       `comment:"订单状态,0:已取消、1:待支付、2:已支付、3:已退款"`
 	PayTime          time.Time `comment:"订单付款时间"`

+ 81 - 0
models/order/order_user_card.go

@@ -151,3 +151,84 @@ func GetCygxOrderUserCardCount(condition string, pars []interface{}) (count int,
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
+
+// 删除
+func RemoveCygxOrderUserCard(item *CygxOrderUserCard, itemOrder *CygxOrder) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		fmt.Println(err)
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	itemOrderAction := new(CygxOrderAction)
+
+	itemOrderAction.Action = "退款成功"
+	itemOrderAction.OrderStatus = 3
+	itemOrderAction.OrderStatusText = "已退款"
+	itemOrderAction.OrderCode = item.OrderCode
+	itemOrderAction.UserId = item.UserId
+	itemOrderAction.Mobile = item.Mobile
+	itemOrderAction.Email = item.Email
+	itemOrderAction.CompanyId = item.CompanyId
+	itemOrderAction.CompanyName = item.CompanyName
+	itemOrderAction.RealName = item.RealName
+	itemOrderAction.SellerName = item.SellerName
+	itemOrderAction.CreateTime = time.Now()
+	itemOrderAction.ModifyTime = time.Now()
+	itemOrderAction.RegisterPlatform = item.RegisterPlatform
+
+	updateParams := make(map[string]interface{})
+	updateParams["OrderStatus"] = itemOrder.OrderStatus
+	updateParams["ModifyTime"] = item.ModifyTime
+	ptrStructOrTableName := "cygx_order"
+	whereParam := map[string]interface{}{"order_code": itemOrder.OrderCode}
+	qs := o.QueryTable(ptrStructOrTableName)
+	for expr, exprV := range whereParam {
+		qs = qs.Filter(expr, exprV)
+	}
+	_, err = qs.Update(updateParams) // 修改订单状态
+	if err != nil {
+		return
+	}
+
+	_, err = o.Insert(itemOrderAction) // 写入订单操作信息
+	if err != nil {
+		return
+	}
+
+	sql := ` DELETE FROM cygx_order_user_card  WHERE mobile=? ` // 删除原有的持卡信息
+	_, err = o.Raw(sql, item.Mobile).Exec()
+	if err != nil {
+		return
+	}
+
+	itemLog := new(CygxOrderUserCardLog)
+	itemLog.OrderCode = item.OrderCode
+	itemLog.UserId = item.UserId
+	itemLog.Mobile = item.Mobile
+	itemLog.Email = item.Email
+	itemLog.CompanyId = item.CompanyId
+	itemLog.CompanyName = item.CompanyName
+	itemLog.RealName = item.RealName
+	itemLog.SellerName = item.SellerName
+	itemLog.CreateTime = time.Now()
+	itemLog.ModifyTime = time.Now()
+	itemLog.RegisterPlatform = item.RegisterPlatform
+	itemLog.CardType = item.CardType
+	itemLog.StartDate = item.StartDate
+	itemLog.EndDate = item.EndDate
+	itemLog.IsSuspend = 1
+
+	_, err = o.Insert(itemLog) // 写入用户持卡日志表
+	if err != nil {
+		return
+	}
+	return
+}

+ 60 - 0
models/order/order_virtual_asset.go

@@ -95,3 +95,63 @@ func GetCygxOrderVirtualAssetdCount(condition string, pars []interface{}) (count
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
+
+// 移除用户活动权限记录
+func RemoveCygxOrderVirtualAsset(item *CygxOrderVirtualAsset, itemOrder *CygxOrder) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		fmt.Println(err)
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	itemOrderAction := new(CygxOrderAction)
+
+	itemOrderAction.Action = "退款成功"
+	itemOrderAction.OrderStatus = 3
+	itemOrderAction.OrderStatusText = "已退款"
+	itemOrderAction.OrderCode = item.OrderCode
+	itemOrderAction.UserId = item.UserId
+	itemOrderAction.Mobile = item.Mobile
+	itemOrderAction.Email = item.Email
+	itemOrderAction.CompanyId = item.CompanyId
+	itemOrderAction.CompanyName = item.CompanyName
+	itemOrderAction.RealName = item.RealName
+	itemOrderAction.SellerName = item.SellerName
+	itemOrderAction.CreateTime = time.Now()
+	itemOrderAction.ModifyTime = time.Now()
+	itemOrderAction.RegisterPlatform = utils.REGISTER_PLATFORM
+
+	updateParams := make(map[string]interface{})
+	updateParams["OrderStatus"] = itemOrder.OrderStatus
+	updateParams["ModifyTime"] = item.ModifyTime
+	ptrStructOrTableName := "cygx_order"
+	whereParam := map[string]interface{}{"order_code": itemOrder.OrderCode}
+	qs := o.QueryTable(ptrStructOrTableName)
+	for expr, exprV := range whereParam {
+		qs = qs.Filter(expr, exprV)
+	}
+	_, err = qs.Update(updateParams) // 修改订单状态
+	if err != nil {
+		return
+	}
+
+	_, err = o.Insert(itemOrderAction) // 写入订单操作信息
+	if err != nil {
+		return
+	}
+
+	sql := ` DELETE FROM cygx_order_virtual_asset  WHERE order_code =? ` // 删除原有的持卡信息
+	_, err = o.Raw(sql, item.OrderCode).Exec()
+	if err != nil {
+		return
+	}
+
+	return
+}

+ 1 - 0
services/article.go

@@ -589,6 +589,7 @@ func GetArticleDetailUserPower(user *models.WxUserItem, articleInfo *models.Arti
 
 	//用户是否持有有效卡片
 	userCardTotal := GetCygxOrderUserCardTotal(user.Mobile)
+	fmt.Println("userCardTotal", userCardTotal)
 	if userCardTotal == 1 {
 		havePower = true
 		return

+ 80 - 2
services/order.go

@@ -128,7 +128,7 @@ func GetHaverEquallyOrderByUser10MinByActivty(userId, sourceId int) (orderCode s
 	return
 }
 
-// 处理订单回调
+// 处理支付订单回调
 func HandleOrderHandle(itemCallback *WechatPayCallback) {
 	var err error
 	defer func() {
@@ -156,7 +156,6 @@ func HandleOrderHandle(itemCallback *WechatPayCallback) {
 	if orderDetail.OrderStatus == 2 {
 		return
 	}
-	go AddCygxOrderPayment(itemCallback) // 记录支付交易信息
 
 	itemOrder := new(order.CygxOrder)
 	itemOrder.OrderCode = itemCallback.OutTradeNo
@@ -245,3 +244,82 @@ func AddCygxOrderPayment(itemCallback *WechatPayCallback) {
 	}
 	return
 }
+
+// 处理退款订单回调
+func HandleOrderRefundHandle(itemCallback *WechatPayCallback) {
+	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
+}