xingzai 9 kuukautta sitten
vanhempi
commit
6e2a34201b
2 muutettua tiedostoa jossa 66 lisäystä ja 3 poistoa
  1. 10 0
      models/order/order.go
  2. 56 3
      services/order.go

+ 10 - 0
models/order/order.go

@@ -110,6 +110,16 @@ func GetCygxOrderList(condition string, pars []interface{}, startSize, pageSize
 	return
 }
 
+func GetCygxOrderDetailList(condition string, pars []interface{}) (items []*CygxOrder, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *
+			FROM
+			cygx_order
+			WHERE 1 = 1 ` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
 // 自动取消订单
 func CancelCygxOrder(item *CygxOrder) (err error) {
 	o, err := orm.NewOrm().Begin()

+ 56 - 3
services/order.go

@@ -68,7 +68,7 @@ func GetQueryOrderByOutTradeNoTask(cont context.Context) (err error) {
 		err = errors.New("GetCygxOrderList, Err: " + e.Error())
 		return
 	}
-	fmt.Println(len(orderList))
+
 	if len(orderList) == 0 {
 		return
 	}
@@ -173,6 +173,8 @@ func HandleOrderHandle(itemCallback *Transaction) {
 	if orderDetail.Source == utils.CYGX_OBJ_ACTIVITY {
 		go AddActivitySignupByWechatPay(orderDetail.SourceId, orderDetail.UserId) //微信付款成功自动添加报名
 	}
+	go CancelOtherOrder(orderDetail) //付款成功之后自动取消其他相同的订单
+
 	return
 }
 
@@ -331,11 +333,21 @@ func AddActivitySignupByWechatPay(activityId, userId int) {
 		err = errors.New("GetAddActivityInfoById, Err: " + e.Error())
 		return
 	}
+	var userPointsNum float64
+	if activityInfo.IsResearchPoints {
+		//获取活动对用户要扣的点
+		userPointsNum, e = models.GetCygxActivityPointsSetUserNum(activityInfo.ActivityId)
+		if e != nil {
+			err = errors.New("GetCygxActivityPointsSetUserNum, Err: " + e.Error())
+			return
+		}
+	}
 
-	//专家线下沙龙与买方线下交流自动报名
-	if activityInfo.ActivityTypeId != 5 && activityInfo.ActivityTypeId != 8 {
+	//专家线下沙龙与买方线下交流、扣点的公司调研电话会自动报名
+	if activityInfo.ActivityTypeId != 5 && activityInfo.ActivityTypeId != 8 && userPointsNum == 0 {
 		return
 	}
+
 	user, e := models.GetWxUserItemByUserId(userId)
 	if e != nil {
 		err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
@@ -441,3 +453,44 @@ func CancelActivitySignupByWechatPay(activityId, userId int) {
 
 	return
 }
+
+// 付款成功之后自动取消其他相同的订单
+func CancelOtherOrder(item *order.CygxOrder) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("付款成功之后自动取消其他相同的订单失败 CancelOtherOrder, err:", err.Error(), "order_id:", item.OrderId), 2)
+		}
+	}()
+
+	var condition string
+	var pars []interface{}
+	userId := item.UserId
+
+	//判断是日卡月卡还是单场付费活动
+	if item.GoodsId == 1 || item.GoodsId == 2 {
+		condition += ` AND user_id  = ?  AND  goods_id IN (1,2)  AND  order_id  != ? AND  order_status = 1  `
+		pars = append(pars, userId, item.OrderId)
+	} else {
+		condition += ` AND user_id  = ?  AND  source_id = ?   AND  source = ?  AND  order_id  != ? AND  order_status = 1  `
+		pars = append(pars, userId, item.SourceId, item.Source, item.OrderId)
+	}
+
+	listOrder, e := order.GetCygxOrderDetailList(condition, pars) // 这里就一条数据
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxOrderDetailList, Err: " + e.Error())
+		return
+	}
+	if len(listOrder) == 0 {
+		err = nil
+		return
+	}
+	for _, v := range listOrder {
+		e = order.CancelCygxOrder(v)
+		if e != nil {
+			return
+		}
+	}
+	return
+}