123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package task
- import (
- qu "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/redis"
- "fmt"
- "github.com/robfig/cron"
- "log"
- "math"
- "qmx_admin/src/config"
- "qmx_admin/src/order"
- "time"
- )
- // 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 := config.CbsDB.SelectBySql(query)
- if data != nil && *data != nil && len(*data) > 0 {
- orderData := config.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, "order_status": 1}
- contract := config.JysqlDB.FindOne("contract", map[string]interface{}{"order_code": orderCode}, "", "")
- count := config.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 := config.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)
- config.JysqlDB.Update("dataexport_order", map[string]interface{}{"order_code": orderCode}, updateData)
- config.CbsDB.Update("transaction", map[string]interface{}{"id": id}, map[string]interface{}{"ISRELATION": 1, "return_id": fmt.Sprint(returnId)})
- filterMap := qu.ObjToMap(o["filter"])
- paybackOpenServer := false
- if v, ok := ((*filterMap)["paybackOpenServer"]).(bool); ok {
- paybackOpenServer = v
- }
- if qu.IntAll(o["return_status"]) == 1 && paybackOpenServer {
- err := order.OpenUserService(nil, orderCode, o)
- if err != nil {
- log.Println("自动回款开通权益失败", id, orderCode)
- }
- }
- } else {
- log.Println("自动回款创建回款记录失败", id, orderCode)
- }
- } else {
- log.Println("自动回款重复匹配过滤", id, orderCode)
- }
- }
- }
- }
- }
- } else {
- log.Println("回款信息查询为空")
- }
- log.Println("自动回款匹配。。。结束")
- }
|