瀏覽代碼

自动回款迁移到qmx_admin中

renjiaojiao 1 年之前
父節點
當前提交
7196faa5a3
共有 8 個文件被更改,包括 203 次插入64 次删除
  1. 3 2
      src/config.json
  2. 1 0
      src/config/config.go
  3. 1 0
      src/main.go
  4. 6 2
      src/order/otherOrderService.go
  5. 77 54
      src/order/serviceOpen.go
  6. 106 0
      src/task/returnMoneyTask.go
  7. 1 5
      userSync/src/main.go
  8. 8 1
      userSync/src/server/server.go

+ 3 - 2
src/config.json

@@ -60,7 +60,7 @@
   "jobNum": 20,
   "jobNum": 20,
   "webdomain": "http://web-jydev-wh.jianyu360.cn",
   "webdomain": "http://web-jydev-wh.jianyu360.cn",
   "bigmemberKey": "bigmember_power_",
   "bigmemberKey": "bigmember_power_",
-  "jyOrderApi": "http://127.0.0.1:8888",
+  "jyOrderApi": "http://192.168.3.128:1234",
   "jyRedis": "bigmember_power_",
   "jyRedis": "bigmember_power_",
   "jyResources": "http://127.0.0.1:8889",
   "jyResources": "http://127.0.0.1:8889",
   "unitPrice_normal": 1,
   "unitPrice_normal": 1,
@@ -227,5 +227,6 @@
     "nationwide": 599,
     "nationwide": 599,
     "SingleProvince": 38
     "SingleProvince": 38
   },
   },
-  "releaseTime": 1709568000
+  "releaseTime": 1709568000,
+  "tasktime": 3
 }
 }

+ 1 - 0
src/config/config.go

@@ -87,6 +87,7 @@ type SysConfig struct {
 	EntAnalysis       int                    `json:"entAnalysis"` //服务列表企业分析服务去掉一条数据
 	EntAnalysis       int                    `json:"entAnalysis"` //服务列表企业分析服务去掉一条数据
 	VipPrice          map[string]interface{} `json:"vipPrice"`
 	VipPrice          map[string]interface{} `json:"vipPrice"`
 	ReleaseTime       int64                  `json:"releaseTime"`
 	ReleaseTime       int64                  `json:"releaseTime"`
+	Tasktime          int                    `json:"tasktime"`
 }
 }
 
 
 var GmailAuth []*mail.GmailAuth
 var GmailAuth []*mail.GmailAuth

+ 1 - 0
src/main.go

@@ -86,6 +86,7 @@ func main() {
 	cn.Start()
 	cn.Start()
 	order.ShopTask()
 	order.ShopTask()
 	go task.MsgAgain(0)
 	go task.MsgAgain(0)
+	task.AutoReturnMoneyTask()
 	err := endless.ListenAndServe(config.SysConfigs.WebPort, nil, func() {})
 	err := endless.ListenAndServe(config.SysConfigs.WebPort, nil, func() {})
 	if err != nil {
 	if err != nil {
 		fmt.Println("Listen Server Error", err)
 		fmt.Println("Listen Server Error", err)

+ 6 - 2
src/order/otherOrderService.go

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

+ 77 - 54
src/order/serviceOpen.go

@@ -15,6 +15,7 @@ import (
 	"util"
 	"util"
 )
 )
 
 
+//ServiceOpen 订单详情开通权益
 func ServiceOpen(context *admin.Context) (interface{}, error) {
 func ServiceOpen(context *admin.Context) (interface{}, error) {
 	param := new(struct {
 	param := new(struct {
 		OrderCode string `form:"orderCode"`
 		OrderCode string `form:"orderCode"`
@@ -96,9 +97,18 @@ func ServiceOpen(context *admin.Context) (interface{}, error) {
 		util.MQFW.UpdateById("user", cm.ObjToString((*order)["user_id"]), bson.M{
 		util.MQFW.UpdateById("user", cm.ObjToString((*order)["user_id"]), bson.M{
 			"$set": set,
 			"$set": set,
 		})
 		})
-		util.JysqlDB.Update("dataexport_order", map[string]interface{}{"order_code": cm.ObjToString(param.OrderCode)}, map[string]interface{}{"user_phone": param.Phone, "user_id": userId})
+		//util.JysqlDB.Update("dataexport_order", map[string]interface{}{"order_code": cm.ObjToString(param.OrderCode)}, map[string]interface{}{"user_phone": param.Phone, "user_id": userId})
+	}
+	filterMap := map[string]interface{}{}
+	if err := json.Unmarshal([]byte(cm.ObjToString((*order)["filter"])), &filterMap); err != nil {
+		return nil, err
+	}
+	filterMap["isServiceOpen"] = 1 //是否已开通权益 1开通
+	updateMap := map[string]interface{}{
+		"user_phone": param.Phone,
+		"user_id":    userId,
+		"filter":     fmt.Sprintf("%v", filterMap),
 	}
 	}
-
 	if productType == "VIP订阅" {
 	if productType == "VIP订阅" {
 		if cm.IntAll(userData["i_vip_status"]) > 0 {
 		if cm.IntAll(userData["i_vip_status"]) > 0 {
 			return nil, errors.New(fmt.Sprintf("手机号:%s已有vip订阅权限,无法开通权益!", param.Phone))
 			return nil, errors.New(fmt.Sprintf("手机号:%s已有vip订阅权限,无法开通权益!", param.Phone))
@@ -152,12 +162,10 @@ func ServiceOpen(context *admin.Context) (interface{}, error) {
 			}, param.Phone)
 			}, param.Phone)
 			ClearBigVipUserPower(userId)
 			ClearBigVipUserPower(userId)
 		}
 		}
+		updateMap["vip_starttime"] = vipStartTime.Format(cm.Date_Full_Layout)
+		updateMap["vip_endtime"] = vipEndTime.Format(cm.Date_Full_Layout)
 
 
 	} else if productType == "大会员" {
 	} else if productType == "大会员" {
-		filterMap := map[string]interface{}{}
-		if err := json.Unmarshal([]byte(cm.ObjToString((*order)["filter"])), &filterMap); err != nil {
-			return nil, err
-		}
 		createType := cm.IntAll(filterMap["createType"])
 		createType := cm.IntAll(filterMap["createType"])
 		if createType == 1 { //1-新建 2-补充 3-延期
 		if createType == 1 { //1-新建 2-补充 3-延期
 			bigStartTime := time.Unix(param.StartTime, 0)
 			bigStartTime := time.Unix(param.StartTime, 0)
@@ -172,6 +180,10 @@ func ServiceOpen(context *admin.Context) (interface{}, error) {
 			}
 			}
 		}
 		}
 	}
 	}
+	//更新订单
+	if !util.JysqlDB.Update("dataexport_order", map[string]interface{}{"order_code": param.OrderCode}, updateMap) {
+		return nil, errors.New("权益已开通,更新订单出错")
+	}
 	return map[string]interface{}{
 	return map[string]interface{}{
 		"status": 1,
 		"status": 1,
 	}, nil
 	}, nil
@@ -310,6 +322,23 @@ func GetStartAndEndTime(startTime string, cycleCount, cycleUnit int) (vipStartTi
 	return vipStartTime, endTime
 	return vipStartTime, endTime
 }
 }
 
 
+func GetReturnTimeAndCheckTime(orderCode string) (newReturnMoneyTime, checkPassTime time.Time, err error) {
+	returnMoneyRecord := util.JysqlDB.FindOne("return_money_record", map[string]interface{}{"order_code": orderCode}, `"return_time"`, "return_time DESC")
+	if returnMoneyRecord != nil && len(*returnMoneyRecord) > 0 {
+		newReturnMoneyTime, _ = time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString((*returnMoneyRecord)["return_time"]), time.Local)
+	} else {
+		return time.Time{}, time.Time{}, errors.New("查询回款记录表没有数据")
+	}
+	//查询审核通过时间
+	checkInfo := util.JysqlDB.FindOne("audit_records", map[string]interface{}{"order_code": orderCode, "audit_status": 3}, "", "")
+	if checkInfo != nil && len(*checkInfo) > 0 {
+		checkPassTime, _ = time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString((*checkInfo)["create_time"]), time.Local)
+	} else {
+		return time.Time{}, time.Time{}, errors.New("查询回款记录表没有数据")
+	}
+	return newReturnMoneyTime, checkPassTime, nil
+}
+
 // OpenUserService 全额回款后开通权益
 // OpenUserService 全额回款后开通权益
 func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 	var err error
 	var err error
@@ -319,52 +348,40 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 		return err
 		return err
 	}
 	}
 	userId, userData := FindUserDataByPhone(cm.ObjToString(orderInfo["user_phone"]))
 	userId, userData := FindUserDataByPhone(cm.ObjToString(orderInfo["user_phone"]))
-
 	if productType == "VIP订阅" {
 	if productType == "VIP订阅" {
 		vipType := cm.IntAll(orderInfo["vip_type"])
 		vipType := cm.IntAll(orderInfo["vip_type"])
 		if vipType != 0 {
 		if vipType != 0 {
-			vipEndTime, _ := time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString(orderInfo["vip_endtime"]), time.Local)
+			//用户原服务结束日期
+			vipEndTime, _ := time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString(userData["l_vip_endtime"]), time.Local)
+			//最近回款流水时间
 			if vipType == 1 { //超级订阅续费
 			if vipType == 1 { //超级订阅续费
-				//需要判断续费开始日期小于审核日期,开始日期改为审核日期,结束日期根据开始日期往后延
-				vipStartTime, _ := time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString(orderInfo["vip_starttime"]), time.Local)
+				var newStartTime, newEndTime time.Time
 				set := map[string]interface{}{
 				set := map[string]interface{}{
-					//"l_vip_endtime":    vipEndTime.Unix(),
 					"i_vip_expire_tip": 0,
 					"i_vip_expire_tip": 0,
 					"i_vip_status":     2,
 					"i_vip_status":     2,
 				}
 				}
-				if vipStartTime.Unix() < time.Now().Unix() {
-					vipStartTime = time.Now().Local()
-					//结束日期计算
-					month := 0
-					cycleUnit := cm.IntAll(filterMap["cycleunit"])
-					cycleCount := cm.IntAll(filterMap["cyclecount"])
-					if cm.ObjToString(orderInfo["vip_endtime"]) != "" {
-						if cycleUnit == 1 {
-							month = cycleCount * 12
-						} else if cycleUnit == 2 {
-							month = cycleCount
-						} else if cycleUnit == 4 {
-							month = cycleCount * 3
-						}
+				if vipEndTime.Unix() < time.Now().Unix() { //原服务已过期
+					//查询回款记录,最近一笔回款时间
+					newReturnMoneyTime, checkPassTime, err := GetReturnTimeAndCheckTime(orderCode)
+					if err != nil {
+						return err
 					}
 					}
-					if cycleUnit == 3 {
-						_endTime := vipStartTime.AddDate(0, 0, cycleCount)
-						t := _endTime.Format(cm.Date_Short_Layout) + " 23:59:59"
-						vipEndTime, _ = time.ParseInLocation(cm.Date_Full_Layout, t, time.Local)
+					if newReturnMoneyTime.Unix() > checkPassTime.Unix() {
+						newStartTime = newReturnMoneyTime
 					} else {
 					} else {
-						vipEndTime = GetDATE1(month, vipStartTime.Unix())
-					}
-					set["l_vip_starttime"] = vipStartTime.Unix()
-					//更新订单信息
-					ok := util.JysqlDB.Update(DataExportOrder, map[string]interface{}{"order_code": orderCode}, map[string]interface{}{"vip_starttime": vipStartTime.Format(cm.Date_Full_Layout), "vip_endtime": vipEndTime.Format(cm.Date_Full_Layout)})
-					if !ok {
-						return errors.New("更新订单信息出错")
+						newStartTime = checkPassTime
 					}
 					}
+					set["l_vip_starttime"] = newStartTime.Unix()
+
+				} else { //原服务未过期
+					//开始时间为:原服务结束日期+1天
+					newStartTime = vipEndTime.AddDate(0, 0, 1)
 				}
 				}
-				set["l_vip_endtime"] = vipEndTime.Unix()
+				set["l_vip_endtime"] = newEndTime.Unix()
+				_, newEndTime = GetStartAndEndTime(newStartTime.Format(cm.Date_Full_Layout), cm.IntAll(filterMap["cyclecount"]), cm.IntAll(filterMap["cycleunit"]))
 				if !util.MQFW.UpdateById("user", userId,
 				if !util.MQFW.UpdateById("user", userId,
 					bson.M{"$set": set}) {
 					bson.M{"$set": set}) {
-					log.Printf("%s更新结束%d日期出错\n", userId, vipEndTime.Unix())
+					return errors.New(fmt.Sprintf("%s更新结束%d日期出错", userId, vipEndTime.Unix()))
 				}
 				}
 			} else if vipType == 2 { //升级
 			} else if vipType == 2 { //升级
 				//先判断审核通过日期是否再超级订阅有效期内
 				//先判断审核通过日期是否再超级订阅有效期内
@@ -379,7 +396,7 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 							"i_isvalid": 1,
 							"i_isvalid": 1,
 						},
 						},
 					}, false, true) {
 					}, false, true) {
-					log.Printf("%s vip_upgrade 更新失败  时间:%d\n", userId, vipEndTime.Unix())
+					return errors.New(fmt.Sprintf("%s vip_upgrade 更新失败 订单编号:%s", userId, orderCode))
 				}
 				}
 				updata := map[string]interface{}{
 				updata := map[string]interface{}{
 					"o_vipjy.o_buyset": filterMap["newBuyset"],
 					"o_vipjy.o_buyset": filterMap["newBuyset"],
@@ -392,16 +409,14 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 				if filterMap["industry"] != nil {
 				if filterMap["industry"] != nil {
 					updata["o_vipjy.a_buyerclass"] = filterMap["industry"] //设置行业
 					updata["o_vipjy.a_buyerclass"] = filterMap["industry"] //设置行业
 				}
 				}
-				if ok := util.MQFW.UpdateById("user", userId, map[string]interface{}{
+				if !util.MQFW.UpdateById("user", userId, map[string]interface{}{
 					"$set": updata,
 					"$set": updata,
-				}); !ok {
-					log.Printf("%s更新用户出错 %+v\n", userId, updata)
-					return errors.New("更新user用户信息出错")
+				}) {
+					return errors.New(fmt.Sprintf("%s更新用户出错 %+v", userId, updata))
 				} else {
 				} else {
 					//清理缓存
 					//清理缓存
 					go ClearBigVipUserPower(userId)
 					go ClearBigVipUserPower(userId)
 				}
 				}
-
 			}
 			}
 		}
 		}
 
 
@@ -429,21 +444,29 @@ func OpenUserService(orderCode string, orderInfo map[string]interface{}) error {
 				ok1, err = BigMemberSupple(freeSubNum, paySubNum, startTime, endTime, userId, filterMap, serverArr)
 				ok1, err = BigMemberSupple(freeSubNum, paySubNum, startTime, endTime, userId, filterMap, serverArr)
 
 
 			} else if createType == 3 { //大会员延长服务
 			} else if createType == 3 { //大会员延长服务
-				//判断开始时间小于审核时间,开始时间改为审核时间
-				lastEndTime := cm.Int64All(userData["i_member_endtime"])
-				//newBigStartTime := time.Now().Unix()
-				startTime := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Now().Location())
+				bmEndTime, _ := time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString(userData["i_member_endtime"]), time.Local)
+				var newStartTime, newEndTime time.Time
 				effectState := true
 				effectState := true
-				var endTime time.Time
-				if lastEndTime < time.Now().Unix() {
-					//计算大会员结束时间
+				if bmEndTime.Unix() < time.Now().Unix() || cm.IntAll(userData["i_member_status"]) < 0 { //原服务已过期
+					//查询回款记录,最近一笔回款时间
+					newReturnMoneyTime, checkPassTime, err := GetReturnTimeAndCheckTime(orderCode)
+					if err != nil {
+						return err
+					}
+					if newReturnMoneyTime.Unix() > checkPassTime.Unix() {
+						newStartTime = newReturnMoneyTime
+					} else {
+						newStartTime = checkPassTime
+					}
 					effectState = false
 					effectState = false
 					cycleCount := cm.IntAll(filterMap["cycle"])
 					cycleCount := cm.IntAll(filterMap["cycle"])
 					cycleType := cm.IntAll(filterMap["cycleType"])
 					cycleType := cm.IntAll(filterMap["cycleType"])
-					nowTime := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local)
-					endTime = GetDATE(cycleCount, cycleType, nowTime.Unix())
+					newEndTime = GetDATE(cycleCount, cycleType, newStartTime.Unix())
+				} else { //原服务未过期
+					//开始时间为:原服务结束日期+1天
+					newStartTime = bmEndTime.AddDate(0, 0, 1)
 				}
 				}
-				ok1, err = BigMemberExtend(filterMap, userId, orderCode, effectState, startTime, endTime, cm.IntAll(userData["i_member_status"]))
+				ok1, err = BigMemberExtend(filterMap, userId, orderCode, effectState, newStartTime, newEndTime, cm.IntAll(userData["i_member_status"]))
 			}
 			}
 			if !ok1 && err != nil {
 			if !ok1 && err != nil {
 				return err
 				return err

+ 106 - 0
src/task/returnMoneyTask.go

@@ -0,0 +1,106 @@
+package task
+
+import (
+	"config"
+	"fmt"
+	"github.com/cron"
+	"log"
+	"math"
+	"order"
+	qu "qfw/util"
+	"qfw/util/redis"
+	"time"
+	"util"
+)
+
+// TimeTask1 自动回款定时任务
+func AutoReturnMoneyTask() {
+	StartTask1()
+	c := cron.New()
+	taskTime := config.SysConfigs.Tasktime
+	log.Println(taskTime)
+	cronStr := "0 */" + fmt.Sprint(taskTime) + " * * * ?"
+	// cronstr := "0 0 */" + fmt.Sprint(taskTime) + " * * ?" //每TaskTime小时执行一次
+	err := c.AddFunc(cronStr, func() {
+		StartTask1()
+	})
+	if err != nil {
+		fmt.Println("定时任务启动失败:", err)
+		return
+	}
+	c.Start()
+}
+
+// StartTask1 自动回款任务
+func StartTask1() {
+	log.Println("自动回款匹配。。。开始")
+	query := "select * from transaction where ISRELATION = 0"
+	log.Println("query: ", query)
+	data := util.CbsDB.SelectBySql(query)
+	if data != nil && *data != nil && len(*data) > 0 {
+		orderData := util.JysqlDB.Find("dataexport_order", map[string]interface{}{"return_status": 0, "audit_status": 3}, "order_code,pay_money,company_name,commission,procedures_money,filter", "", -1, -1)
+		for _, v := range *data {
+			returnMoney := int(math.Floor(float64(float64(qu.Float64All(v["TRSBAL"]))*100) + 0.5))
+			companyName := qu.ObjToString(v["OTHNAM"])
+			remark := qu.ObjToString(v["TXTDSM"])
+			remarks := qu.ObjToString(v["NUSAGE"])
+			id := qu.IntAll(v["id"])
+			returnTime := qu.ObjToString(v["BNKTIM"])
+			BNKFLW := qu.ObjToString(v["BNKFLW"])
+			BNKNAM := qu.ObjToString(v["BNKNAM"])
+			if orderData != nil && len(*orderData) > 0 {
+				for _, o := range *orderData {
+					money := qu.IntAll(o["pay_money"]) - qu.IntAll(o["commission"]) - qu.IntAll(o["procedures_money"])
+					companyNames := qu.ObjToString(o["company_name"])
+					orderCode := qu.ObjToString(o["order_code"])
+					if money == returnMoney && (companyNames == companyName || remark == orderCode || remarks == orderCode) {
+						isExists, err := redis.Exists("qmx_filter", "qmx_auto_return_"+fmt.Sprint(id))
+						if !isExists || err != nil {
+							log.Println("自动回款匹配成功", id, orderCode)
+							updateData := map[string]interface{}{"return_status": 1}
+							contract := util.JysqlDB.FindOne("contract", map[string]interface{}{"order_code": orderCode}, "", "")
+							count := util.JysqlDB.Count("return_money_record", map[string]interface{}{"order_code": orderCode})
+							if count < 1 && contract != nil && qu.IntAll((*contract)["contract_archive_status"]) != 1 {
+								updateData["sale_time"] = returnTime
+							}
+							returnId := util.JysqlDB.Insert("return_money_record", map[string]interface{}{
+								"order_code":            orderCode,
+								"return_time":           returnTime,
+								"return_money":          money,
+								"return_type":           3,
+								"return_invoice_status": 0,
+								"operate_time":          time.Now().Format("2006-01-02 15:04:05"),
+								"flow_money":            money,
+								"bank_name":             BNKNAM,
+								"bank_flow":             BNKFLW,
+								"operate_type":          2,
+								"state":                 1,
+								"pay_account_name":      companyName,
+							})
+							redis.Put("qmx_filter", "qmx_auto_return_"+fmt.Sprint(id), 1, 3600)
+							if returnId > 0 {
+								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 {
+									err := order.OpenUserService(orderCode, o)
+									if err != nil {
+										log.Println("自动回款开通权益失败", id, orderCode)
+									}
+								}
+							} else {
+								log.Println("自动回款创建回款记录失败", id, orderCode)
+							}
+						} else {
+							log.Println("自动回款重复匹配过滤", id, orderCode)
+						}
+					}
+				}
+			}
+		}
+	} else {
+		log.Println("回款信息查询为空")
+	}
+	log.Println("自动回款匹配。。。结束")
+}

+ 1 - 5
userSync/src/main.go

@@ -1,12 +1,8 @@
 package main
 package main
 
 
-import (
-	. "server"
-)
-
 func main() {
 func main() {
 	TimeTask()
 	TimeTask()
-	TimeTask1()
+	//TimeTask1()
 	ch := make(chan bool, 1)
 	ch := make(chan bool, 1)
 	<-ch
 	<-ch
 }
 }

+ 8 - 1
userSync/src/server/server.go

@@ -106,7 +106,7 @@ func StartTask1() {
 	log.Println("query: ", query)
 	log.Println("query: ", query)
 	data := Mysqls.SelectBySql(query)
 	data := Mysqls.SelectBySql(query)
 	if data != nil && *data != nil && len(*data) > 0 {
 	if data != nil && *data != nil && len(*data) > 0 {
-		orderData := Mysql.Find("dataexport_order", map[string]interface{}{"return_status": 0, "audit_status": 3}, "order_code,pay_money,company_name,commission,procedures_money", "", -1, -1)
+		orderData := Mysql.Find("dataexport_order", map[string]interface{}{"return_status": 0, "audit_status": 3}, "order_code,pay_money,company_name,commission,procedures_money,filter", "", -1, -1)
 		for _, v := range *data {
 		for _, v := range *data {
 			returnMoney := int(math.Floor(float64(float64(qu.Float64All(v["TRSBAL"]))*100) + 0.5))
 			returnMoney := int(math.Floor(float64(float64(qu.Float64All(v["TRSBAL"]))*100) + 0.5))
 			companyName := qu.ObjToString(v["OTHNAM"])
 			companyName := qu.ObjToString(v["OTHNAM"])
@@ -150,6 +150,13 @@ func StartTask1() {
 								log.Println("自动回款创建回款记录成功", id, orderCode)
 								log.Println("自动回款创建回款记录成功", id, orderCode)
 								Mysql.Update("dataexport_order", map[string]interface{}{"order_code": orderCode}, updateData)
 								Mysql.Update("dataexport_order", map[string]interface{}{"order_code": orderCode}, updateData)
 								Mysqls.Update("transaction", map[string]interface{}{"id": id}, map[string]interface{}{"ISRELATION": 1, "return_id": fmt.Sprint(returnId)})
 								Mysqls.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 {
+									err := OpenUserService(key, value)
+									if err != nil {
+										return false
+									}
+								}
 							} else {
 							} else {
 								log.Println("自动回款创建回款记录失败", id, orderCode)
 								log.Println("自动回款创建回款记录失败", id, orderCode)
 							}
 							}