Bladeren bron

开通权益修改

renjiaojiao 1 jaar geleden
bovenliggende
commit
b67b881601
4 gewijzigde bestanden met toevoegingen van 95 en 50 verwijderingen
  1. 1 0
      src/order/orderManageService.go
  2. 1 1
      src/order/otherOrderService.go
  3. 91 47
      src/order/serviceOpen.go
  4. 2 2
      src/task/returnMoneyTask.go

+ 1 - 0
src/order/orderManageService.go

@@ -5328,6 +5328,7 @@ func ParamToFilter(param *Params, enddate time.Time, isAll, contractStatus int)
 		"paybackWorkDayNum": param.PaybackWorkDayNum,
 		"paybackExpectDate": param.PaybackExpectDate,
 		"paybackOpenServer": param.PaybackOpenServer,
+		"isServiceOpen":     0,
 	}
 	return filterMap
 }

+ 1 - 1
src/order/otherOrderService.go

@@ -1715,7 +1715,7 @@ func UpdateBatchReturnInfo(transactionData *map[string]interface{}, orderArr map
 			ok_2 := util.JysqlDB.InsertByTx(tx, "return_money_record", insertData)
 			if ok_1 && ok_2 != -1 {
 				//修改成功,判断是否全额回款并且创建订单勾选回款开通权益 paybackOpenServer
-				if qutil.IntAll(updateData["return_status"]) == 1 && qutil.IntAll((*filterMap)["paybackOpenServer"]) == 1 {
+				if qutil.IntAll(updateData["return_status"]) == 1 {
 					err := OpenUserService(key, value)
 					if err != nil {
 						return false

+ 91 - 47
src/order/serviceOpen.go

@@ -119,50 +119,12 @@ func ServiceOpen(context *admin.Context) (interface{}, error) {
 		}
 		filter := (*order)["filter"]
 		filterData := VipSimpleMsg{}
-		var vipStartTime, vipEndTime time.Time
 		if err := json.Unmarshal([]byte(filter.(string)), &filterData); err != nil {
 			return nil, err
 		}
-		vipStartTime, vipEndTime = GetStartAndEndTime(time.Unix(param.StartTime, 0).Format(cm.Date_Full_Layout), filterData.Cyclecount, filterData.Cycleunit)
-		//log.Println("截止时间:", vipStartTime, endTime)
-		//为用户开通超级订阅权限
-		//处理购买省份
-		areaCount := -1
-		buyArea := map[string]interface{}{}
-		if filterData.Area != nil || len(*filterData.Area) > 0 {
-			for k, _ := range *filterData.Area {
-				buyArea[k] = []interface{}{}
-			}
-			areaCount = len(buyArea)
-		}
-		//新购买简单详情
-		newBuySet := SubvipBuySet{
-			Upgrade:         1,
-			AreaCount:       areaCount,
-			NewCitys:        []int{},
-			BuyerclassCount: -1,
-		}
-		set := map[string]interface{}{
-			"o_vipjy.i_trial":      -1,                  //已激活试用
-			"o_vipjy.o_area":       buyArea,             //设置地区
-			"o_vipjy.o_buyset":     newBuySet,           //购买内容 城市、省份、行业数量
-			"l_vip_starttime":      vipStartTime.Unix(), //开始时间
-			"l_vip_endtime":        vipEndTime.Unix(),   //结束时间
-			"i_vip_status":         2,                   //1试用 2正式 -2 试用到期
-			"i_vip_expire_tip":     0,                   //消息提示初始化
-			"o_vipjy.a_buyerclass": []interface{}{},     //设置行业
-		}
-		if cm.IntAll((*order)["buy_subject"]) == 1 {
-			util.MQFW.UpdateById("user", userId, bson.M{
-				"$set": set,
-			})
-			ClearBigVipUserPower(userId)
-		} else {
-			UpdateRule(entId, map[string]interface{}{
-				"$set": set,
-			}, param.Phone)
-			ClearBigVipUserPower(userId)
-		}
+		var vipStartTime, vipEndTime time.Time
+		vipStartTime, vipEndTime = GetStartAndEndTime(time.Unix(param.StartTime, 0).Format(cm.Date_Full_Layout), cm.IntAll(filterMap["cyclecount"]), cm.IntAll(filterMap["cycleunit"]))
+		VipServiceOpen(userId, param.Phone, filterMap, vipStartTime, vipEndTime, cm.IntAll((*order)["buy_subject"]), entId)
 		updateMap["vip_starttime"] = vipStartTime.Format(cm.Date_Full_Layout)
 		updateMap["vip_endtime"] = vipEndTime.Format(cm.Date_Full_Layout)
 
@@ -223,6 +185,51 @@ func ServiceOpen(context *admin.Context) (interface{}, error) {
 	}, nil
 }
 
+func VipServiceOpen(userId, phone string, filterMap map[string]interface{}, vipStartTime, vipEndTime time.Time, buySubject, entId int) {
+	//var vipStartTime, vipEndTime time.Time
+	//vipStartTime, vipEndTime = GetStartAndEndTime(time.Unix(startTime, 0).Format(cm.Date_Full_Layout), cm.IntAll(filterMap["cyclecount"]), cm.IntAll(filterMap["cycleunit"]))
+	//log.Println("截止时间:", vipStartTime, endTime)
+	//为用户开通超级订阅权限
+	//处理购买省份
+	areaCount := -1
+	buyArea := map[string]interface{}{}
+	areaMap := cm.ObjToMap(filterMap["area"])
+	if areaMap != nil && len(*areaMap) > 0 {
+		for k, _ := range *areaMap {
+			buyArea[k] = []interface{}{}
+		}
+		areaCount = len(buyArea)
+	}
+	//新购买简单详情
+	newBuySet := SubvipBuySet{
+		Upgrade:         1,
+		AreaCount:       areaCount,
+		NewCitys:        []int{},
+		BuyerclassCount: -1,
+	}
+	set := map[string]interface{}{
+		"o_vipjy.i_trial":      -1,                  //已激活试用
+		"o_vipjy.o_area":       buyArea,             //设置地区
+		"o_vipjy.o_buyset":     newBuySet,           //购买内容 城市、省份、行业数量
+		"l_vip_starttime":      vipStartTime.Unix(), //开始时间
+		"l_vip_endtime":        vipEndTime.Unix(),   //结束时间
+		"i_vip_status":         2,                   //1试用 2正式 -2 试用到期
+		"i_vip_expire_tip":     0,                   //消息提示初始化
+		"o_vipjy.a_buyerclass": []interface{}{},     //设置行业
+	}
+	if buySubject == 1 {
+		util.MQFW.UpdateById("user", userId, bson.M{
+			"$set": set,
+		})
+		ClearBigVipUserPower(userId)
+	} else {
+		UpdateRule(entId, map[string]interface{}{
+			"$set": set,
+		}, phone)
+		ClearBigVipUserPower(userId)
+	}
+}
+
 func FindUserDataByPhone(phone string) (userId string, userData map[string]interface{}) {
 	userInfo, ok := util.MQFW.FindOne("user", map[string]interface{}{"s_phone": phone})
 	if ok && userInfo != nil && len(*userInfo) > 0 {
@@ -382,9 +389,16 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 		return err
 	}
 	userId, userData := FindUserDataByPhone(cm.ObjToString(orderInfo["user_phone"]))
+	updateOrder := map[string]interface{}{}
 	if productType == "VIP订阅" {
 		vipType := cm.IntAll(orderInfo["vip_type"])
-		if vipType != 0 {
+		if vipType == 0 {
+			vipStartTime, vipEndTime := GetStartAndEndTime(time.Now().Format(cm.Date_Full_Layout), cm.IntAll(filterMap["cyclecount"]), cm.IntAll(filterMap["cycleunit"]))
+			VipServiceOpen(userId, cm.ObjToString(orderInfo["user_phone"]), filterMap, vipStartTime, vipEndTime, cm.IntAll(orderInfo["buy_subject"]), cm.IntAll(orderInfo["ent_id"]))
+			updateOrder["vip_starttime"] = vipStartTime.Format(cm.Date_Full_Layout)
+			updateOrder["vip_endtime"] = vipEndTime.Format(cm.Date_Full_Layout)
+			//filterMap["isServiceOpen"] = 1
+		} else {
 			//用户原服务结束日期
 			vipEndTime, _ := time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString(userData["l_vip_endtime"]), time.Local)
 			//最近回款流水时间
@@ -396,7 +410,7 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 				}
 				if vipEndTime.Unix() < time.Now().Unix() { //原服务已过期
 					//查询回款记录,最近一笔回款时间
-					newReturnMoneyTime, checkPassTime, err := GetReturnTimeAndCheckTime(orderCode)
+					/*newReturnMoneyTime, checkPassTime, err := GetReturnTimeAndCheckTime(orderCode)
 					if err != nil {
 						return err
 					}
@@ -404,7 +418,8 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 						newStartTime = newReturnMoneyTime
 					} else {
 						newStartTime = checkPassTime
-					}
+					}*/
+					newStartTime = time.Now()
 					set["l_vip_starttime"] = newStartTime.Unix()
 
 				} else { //原服务未过期
@@ -452,6 +467,8 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 					go ClearBigVipUserPower(userId)
 				}
 			}
+			updateOrder["vip_starttime"] = time.Now().Format(cm.Date_Full_Layout)
+			updateOrder["vip_endtime"] = vipEndTime.Format(cm.Date_Full_Layout)
 		}
 
 	} else if productType == "大会员" {
@@ -461,7 +478,17 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 		if supplys, ok := filterMap["supplys"].([]interface{}); ok {
 			serverArr = cm.ObjArrToMapArr(supplys)
 		}
-		if createType != 1 { //1-新建 2-补充 3-延期
+		if createType == 1 {
+			bigStartTime := time.Now()
+			bigEndTime := GetDATE(cm.IntAll(filterMap["cycle"]), cm.IntAll(filterMap["cycleType"]), bigStartTime.Unix())
+			status := cm.If(bigStartTime.Unix() > time.Now().Unix(), 0, 1)
+			err := NewBigOpenService(filterMap, userId, bigStartTime, bigEndTime, cm.IntAll(status), cm.IntAll(orderInfo["buy_count"]))
+			if err != nil {
+				return errors.New(fmt.Sprintf("订单编号:%s,开通大会员权益失败", orderCode))
+			}
+			updateOrder["vip_starttime"] = bigStartTime.Format(cm.Date_Full_Layout)
+			updateOrder["vip_endtime"] = bigEndTime.Format(cm.Date_Full_Layout)
+		} else { //1-新建 2-补充 3-延期
 			memberStatus := cm.IntAll(userData["i_member_status"])
 			bigEndTime := cm.Int64All(userData["i_member_endtime"])
 			//memberStatus := cm.IntAll((*userData)["i_member_status"])
@@ -474,6 +501,8 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 				if memberStatus < 0 {
 					return errors.New("服务已到期,权益开通失败")
 				}
+				updateOrder["vip_starttime"] = time.Now().Format(cm.Date_Full_Layout)
+				updateOrder["vip_endtime"] = time.Unix(bigEndTime, 0)
 				//大会员补充服务
 				ok1, err = BigMemberSupple(freeSubNum, paySubNum, startTime, endTime, userId, filterMap, serverArr)
 
@@ -482,7 +511,7 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 				var newStartTime, newEndTime time.Time
 				effectState := true
 				if bmEndTime.Unix() < time.Now().Unix() || cm.IntAll(userData["i_member_status"]) < 0 { //原服务已过期
-					//查询回款记录,最近一笔回款时间
+					/*//查询回款记录,最近一笔回款时间
 					newReturnMoneyTime, checkPassTime, err := GetReturnTimeAndCheckTime(orderCode)
 					if err != nil {
 						return err
@@ -491,7 +520,8 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 						newStartTime = newReturnMoneyTime
 					} else {
 						newStartTime = checkPassTime
-					}
+					}*/
+					newStartTime = time.Now()
 					effectState = false
 					cycleCount := cm.IntAll(filterMap["cycle"])
 					cycleType := cm.IntAll(filterMap["cycleType"])
@@ -500,6 +530,8 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 					//开始时间为:原服务结束日期+1天
 					newStartTime = bmEndTime.AddDate(0, 0, 1)
 				}
+				updateOrder["vip_starttime"] = newStartTime.Format(cm.Date_Full_Layout)
+				updateOrder["vip_endtime"] = newEndTime.Format(cm.Date_Full_Layout)
 				ok1, err = BigMemberExtend(filterMap, userId, orderCode, effectState, newStartTime, newEndTime, cm.IntAll(userData["i_member_status"]))
 			}
 			if !ok1 && err != nil {
@@ -532,8 +564,11 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 		if !ok && err != nil {
 			return err
 		}
+		updateOrder["vip_starttime"] = time.Now().Format(cm.Date_Full_Layout)
+		updateOrder["vip_endtime"] = time.Unix(bigEnd, 0)
 
 	} else if productType == "大会员-补充包" {
+		bigEnd := cm.Int64All(userData["i_member_endtime"])
 		memberStatus := cm.IntAll(userData["i_member_status"])
 		if memberStatus < 0 {
 			return errors.New("服务已到期,权益开通失败")
@@ -547,6 +582,15 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 		if !ok && err != nil {
 			return err
 		}
+		updateOrder["vip_starttime"] = time.Now().Format(cm.Date_Full_Layout)
+		updateOrder["vip_endtime"] = time.Unix(bigEnd, 0)
+	}
+	filterMap["isServiceOpen"] = 1
+	updateOrder["filter"] = fmt.Sprintf("%v", filterMap)
+	//更新订单
+	if !util.JysqlDB.Update("dataexport_order", map[string]interface{}{"order_code": orderCode}, updateOrder) {
+		return errors.New("更新订单出错")
 	}
+
 	return nil
 }

+ 2 - 2
src/task/returnMoneyTask.go

@@ -82,8 +82,8 @@ func StartTask1() {
 								log.Println("自动回款创建回款记录成功", id, orderCode)
 								util.JysqlDB.Update("dataexport_order", map[string]interface{}{"order_code": orderCode}, updateData)
 								util.CbsDB.Update("transaction", map[string]interface{}{"id": id}, map[string]interface{}{"ISRELATION": 1, "return_id": fmt.Sprint(returnId)})
-								filterMap := qu.ObjToMap(o["filter"])
-								if qu.IntAll(o["return_status"]) == 1 && qu.IntAll((*filterMap)["paybackOpenServer"]) == 1 {
+								//filterMap := qu.ObjToMap(o["filter"])
+								if qu.IntAll(o["return_status"]) == 1 {
 									err := order.OpenUserService(orderCode, o)
 									if err != nil {
 										log.Println("自动回款开通权益失败", id, orderCode)