Browse Source

退款回款刷库程序,退款逻辑修改,退款金额

xuzhiheng 4 years ago
parent
commit
9c18f59c0e

+ 10 - 0
refundSync/config.json

@@ -0,0 +1,10 @@
+{
+	"mysql": {
+        "dbName": "jianyu",
+        "address": "192.168.3.11:3366",
+        "userName": "root",
+        "passWord": "Topnet123",
+		"maxOpenConns":2,
+		"maxIdleConns":2
+    }
+}

+ 59 - 0
refundSync/main.go

@@ -0,0 +1,59 @@
+package main
+
+import (
+	"log"
+	qu "qfw/util"
+	"qfw/util/mysql"
+)
+
+type sysConfig struct {
+	Mysql map[string]interface{} `json:"mysql"`
+}
+
+var SysConfig sysConfig
+var Mysql *mysql.Mysql
+
+func init() {
+	qu.ReadConfig("./config.json", &SysConfig)
+	Mysql = &mysql.Mysql{
+		Address:      SysConfig.Mysql["address"].(string),
+		UserName:     SysConfig.Mysql["userName"].(string),
+		PassWord:     SysConfig.Mysql["passWord"].(string),
+		DBName:       SysConfig.Mysql["dbName"].(string),
+		MaxOpenConns: qu.IntAll(SysConfig.Mysql["maxOpenConns"]),
+		MaxIdleConns: qu.IntAll(SysConfig.Mysql["maxIdleConns"]),
+	}
+	Mysql.Init()
+}
+
+func main() {
+	log.Println("退款信息同步。。。开始")
+	query := map[string]interface{}{"order_status": -3}
+	log.Println("query :", query)
+	data := Mysql.Find("dataexport_order", query, "pay_money,order_code,apply_refund_reason", "", -1, -1)
+	if data != nil && *data != nil && len(*data) > 0 {
+		for _, v := range *data {
+			order_code := qu.ObjToString(v["order_code"])
+			refund_reason := qu.ObjToString(v["apply_refund_reason"])
+			refund_money := qu.IntAll(v["pay_money"])
+			refund_id := Mysql.Insert("refund_record", map[string]interface{}{
+				"order_code":    order_code,
+				"refund_time":   qu.NowFormat(qu.Date_Full_Layout),
+				"refund_money":  refund_money,
+				"refund_reason": refund_reason,
+			})
+			if refund_id > 0 {
+				log.Println("退款表插入成功 ", order_code)
+				ok := Mysql.Update("dataexport_order", map[string]interface{}{"order_code": order_code}, map[string]interface{}{"refund_status": 1})
+				if ok {
+					log.Println("退款状态修改成功 ", order_code)
+				}
+			} else {
+				log.Println("退款表插入失败 ", order_code)
+			}
+		}
+	} else {
+		log.Println("未查询到退款数据")
+	}
+	log.Println("退款信息同步。。。结束")
+}

+ 10 - 0
returnSync/config.json

@@ -0,0 +1,10 @@
+{
+	"mysql": {
+        "dbName": "jianyu",
+        "address": "192.168.3.11:3366",
+        "userName": "root",
+        "passWord": "Topnet123",
+		"maxOpenConns":2,
+		"maxIdleConns":2
+    }
+}

+ 97 - 0
returnSync/main.go

@@ -0,0 +1,97 @@
+package main
+
+import (
+	"encoding/json"
+	"log"
+	qu "qfw/util"
+	"qfw/util/mysql"
+)
+
+type sysConfig struct {
+	Mysql map[string]interface{} `json:"mysql"`
+}
+
+var SysConfig sysConfig
+var Mysql *mysql.Mysql
+
+func init() {
+	qu.ReadConfig("./config.json", &SysConfig)
+	Mysql = &mysql.Mysql{
+		Address:      SysConfig.Mysql["address"].(string),
+		UserName:     SysConfig.Mysql["userName"].(string),
+		PassWord:     SysConfig.Mysql["passWord"].(string),
+		DBName:       SysConfig.Mysql["dbName"].(string),
+		MaxOpenConns: qu.IntAll(SysConfig.Mysql["maxOpenConns"]),
+		MaxIdleConns: qu.IntAll(SysConfig.Mysql["maxIdleConns"]),
+	}
+	Mysql.Init()
+}
+
+func main() {
+	log.Println("回款信息同步。。。开始")
+	query := `select order_code,filter from dataexport_order where (locate('"isAll":1', filter) > 0 or locate('"isAll":2', filter) > 0 or locate('"isAll":3', filter) > 0)`
+	log.Println("query :", query)
+	data := Mysql.SelectBySql(query)
+	if data != nil && *data != nil && len(*data) > 0 {
+		for _, v := range *data {
+			order_code := qu.ObjToString(v["order_code"])
+			filterMap := map[string]interface{}{}
+			filterData := qu.ObjToString(v["filter"])
+			if err := json.Unmarshal([]byte(filterData), &filterMap); err == nil {
+				transferV := qu.ObjToString(filterMap["transferV"])
+				transferVTime := qu.ObjToString(filterMap["transferVTime"])
+				isAll := qu.IntAll(filterMap["isAll"])
+				return_status := 0
+				if transferV != "" {
+					refund_id := Mysql.Insert("return_money_record", map[string]interface{}{
+						"order_code":         order_code,
+						"return_time":        transferVTime,
+						"return_voucher_url": transferV,
+						"operate_time":       qu.NowFormat(qu.Date_Full_Layout),
+					})
+					if refund_id > 0 {
+						log.Println("回款表插入成功 ", order_code)
+					} else {
+						log.Println("回款表插入失败 ", order_code)
+					}
+				}
+				if filterMap["collects"] != nil {
+					collects := qu.ObjArrToMapArr(filterMap["collects"].([]interface{}))
+					for _, vv := range collects {
+						tV := qu.ObjToString(vv["transferV"])
+						tVTime := qu.ObjToString(vv["transferVTime"])
+						price := qu.IntAll(vv["price"]) * 100
+						refund_id := Mysql.Insert("return_money_record", map[string]interface{}{
+							"order_code":         order_code,
+							"return_time":        tVTime,
+							"return_voucher_url": tV,
+							"operate_time":       qu.NowFormat(qu.Date_Full_Layout),
+							"return_money":       price,
+						})
+						if refund_id > 0 {
+							log.Println("回款表collects插入成功 ", order_code)
+						} else {
+							log.Println("回款表collects插入失败 ", order_code)
+						}
+					}
+				}
+				if isAll > 0 {
+					if isAll == 1 {
+						return_status = 1
+					} else if isAll == 2 {
+						return_status = 0
+					} else if isAll == 3 {
+						return_status = 2
+					}
+					ok := Mysql.Update("dataexport_order", map[string]interface{}{"order_code": order_code}, map[string]interface{}{"return_status": return_status})
+					if ok {
+						log.Println("回款状态修改成功 ", order_code)
+					}
+				}
+			}
+		}
+	} else {
+		log.Println("未查询到回款数据")
+	}
+	log.Println("回款信息同步。。。结束")
+}

+ 62 - 29
src/order/orderManageController.go

@@ -46,6 +46,10 @@ type Params struct {
 	ServersId      string                   `form:"serversId"`      //服务id逗号拼接
 	ServersName    string                   `form:"serversName"`    //服务名逗号拼接
 	IsAll          int                      `form:"isAll"`          //是否全款
+	ContractMoney  int                      `form:"contractMoney"`  //合同金额
+	ContractUrl    string                   `form:"contractUrl"`    //合同文件地址
+	Remark         string                   `form:"remark"`         // 订单备注
+	Salesperson    string                   `form:"salesperson"`    // 销售人员
 }
 
 //订单列表
@@ -256,6 +260,7 @@ func orderList(context *admin.Context) (interface{}, error) {
 	sql := "select e.id,e.order_code,e.product_type,e.create_time,e.pay_money,e.order_status,e.applybill_status,e.filter,e.dis_word,e.vip_type,e.pay_way,e.course_status from " + DataExportOrder + " e where "
 	sqlc := "SELECT count(*) FROM " + DataExportOrder + " e where"
 	sqlM := "SELECT sum(e.pay_money) money FROM " + DataExportOrder + " e where "
+	sqlrefund := "select sum(refund_money) refundMoney from (select b.order_code,b.refund_money from refund_record b where b.refund_money is not null and exists"
 	if str != "" {
 		sqlM += str
 		sqlM += " e.pay_money is not null"
@@ -263,15 +268,19 @@ func orderList(context *admin.Context) (interface{}, error) {
 		sql += str
 		sqlc += str
 	}
+	sqlrefund += " (" + sql + " and b.order_code = e.order_code)) as a"
 	sql += " order by e.create_time desc limit " + fmt.Sprint(param.Page.Offset) + " " + "," + " " + fmt.Sprint(param.Page.PageSize)
 	log.Println(sqlc)
 	count := util.JysqlDB.CountBySql(sqlc)
-	var money int64
-	if count == 0 {
-		money = 0
-	} else {
+	money, refundMoney := int64(0), int64(0)
+	if count > 0 {
 		log.Println(sqlM)
-		money = util.JysqlDB.CountBySql(sqlM) / 100
+		money = util.JysqlDB.CountBySql(sqlM)
+		log.Println(sqlrefund)
+		refundMoney = util.JysqlDB.CountBySql(sqlrefund)
+		if refundMoney < 0 {
+			refundMoney = 0
+		}
 	}
 	log.Println(sql)
 	res := util.JysqlDB.SelectBySql(sql)
@@ -287,6 +296,7 @@ func orderList(context *admin.Context) (interface{}, error) {
 	data["lists"] = res
 	data["total"] = count
 	data["money"] = money
+	data["refundMoney"] = refundMoney
 	return data, nil
 }
 
@@ -330,43 +340,66 @@ func OrderDetails(context *admin.Context) (interface{}, error) {
 func ConfirmRefund(context *admin.Context) (interface{}, error) {
 
 	param := new(struct {
-		OrderCode   string `form:"orderCode"`   //订单编号
-		ApplyReason string `form:"applyReason"` //退款原因
-		ApplyTime   string `form:"applyTime"`   //申请退款时间
+		OrderCode    string `form:"orderCode"`    //订单编号
+		RefundReason string `form:"refundReason"` //退款原因
+		// ApplyTime   string `form:"refundTime"`   //申请退款时间
+		IsOffline    int `form:"isOffline"`    //是否线下订单 0-不是 1-是
+		RefundStatus int `form:"refundStatus"` //退款状态  1-全额退款 2-部分退款
+		RefundMoney  int `form:"refundMoney"`  //退款金额
 	})
 	err := context.Form(param)
 	if err != nil {
 		return nil, err
 	}
-	applyRefundTime, _ := strconv.ParseInt(param.ApplyTime, 10, 64)
+	// applyRefundTime, _ := strconv.ParseInt(param.ApplyTime, 10, 64)
 	orderCode := param.OrderCode
-	applyRefundReason := param.ApplyReason
+	// applyRefundReason := param.RefundReason
 	qMap := map[string]interface{}{}
 	qMap["order_code"] = orderCode
-	ok := util.JysqlDB.Update("dataexport_order", qMap, map[string]interface{}{
-		"order_status":        -3,
-		"apply_refund_time":   applyRefundTime,
-		"apply_refund_reason": applyRefundReason,
-	})
-	if ok {
-		data := util.JysqlDB.Find("invoice", qMap, "", "create_time", 0, 0)
-		if *data != nil && len(*data) != 0 {
-			if len(*data) > 1 {
-				invoiceSerialnum := qutil.ObjToString((*data)[1]["invoice_serialnum"])
-				if invoiceSerialnum != "" {
-					go RefundInvoice(invoiceSerialnum, orderCode)
-				}
-			} else {
-				invoiceSerialnum := qutil.ObjToString((*data)[0]["invoice_serialnum"])
-				if invoiceSerialnum != "" {
-					go RefundInvoice(invoiceSerialnum, orderCode)
+	if param.IsOffline == 0 {
+		ok := util.JysqlDB.Update("dataexport_order", qMap, map[string]interface{}{
+			"refund_status": param.RefundStatus,
+		})
+		if ok {
+			util.JysqlDB.Insert("refund_record", map[string]interface{}{
+				"order_code":    orderCode,
+				"refund_time":   qutil.NowFormat(qutil.Date_Full_Layout),
+				"refund_money":  param.RefundMoney,
+				"refund_reason": param.RefundReason,
+			})
+			data := util.JysqlDB.Find("invoice", qMap, "", "create_time", 0, 0)
+			if *data != nil && len(*data) != 0 {
+				if len(*data) > 1 {
+					invoiceSerialnum := qutil.ObjToString((*data)[1]["invoice_serialnum"])
+					if invoiceSerialnum != "" {
+						go RefundInvoice(invoiceSerialnum, orderCode)
+					}
+				} else {
+					invoiceSerialnum := qutil.ObjToString((*data)[0]["invoice_serialnum"])
+					if invoiceSerialnum != "" {
+						go RefundInvoice(invoiceSerialnum, orderCode)
+					}
 				}
 			}
+			return true, nil
+		}
+	} else if param.IsOffline == 1 {
+		ok := util.JysqlDB.Update("dataexport_order", qMap, map[string]interface{}{
+			"refund_status": param.RefundStatus,
+		})
+		if ok {
+			okid := util.JysqlDB.Insert("refund_record", map[string]interface{}{
+				"order_code":    orderCode,
+				"refund_time":   qutil.NowFormat(qutil.Date_Full_Layout),
+				"refund_money":  param.RefundMoney,
+				"refund_reason": param.RefundReason,
+			})
+			if okid > 0 {
+				return true, nil
+			}
 		}
-		return true, nil
 	}
 	return false, nil
-
 }
 
 //订单导出

+ 69 - 42
src/order/orderManageService.go

@@ -2578,28 +2578,37 @@ func NewBigOrder(subStatus, dateType int, now, startdate, enddate time.Time, use
 		"serversName":    param.ServersName,
 		"isAll":          param.IsAll,
 		"supplys":        param.ServerArr,
+		"remark":         param.Remark,
 	}
 	filter, _ := json.Marshal(filter_map)
 
 	if param.BigPayMoney != 0 {
 		order_id := util.JysqlDB.Insert("dataexport_order", map[string]interface{}{
-			"order_money":    param.BigMoney,
-			"order_status":   1,
-			"filter":         string(filter),
-			"order_code":     code,
-			"product_type":   "大会员",
-			"create_time":    qutil.NowFormat(qutil.Date_Full_Layout),
-			"prepay_time":    qutil.NowFormat(qutil.Date_Full_Layout),
-			"user_id":        userId,
-			"pay_way":        "transferAccounts",
-			"original_price": param.BigMoney,
-			"pay_money":      param.BigPayMoney,
-			"pay_time":       qutil.NowFormat(qutil.Date_Full_Layout),
-			"vip_starttime":  qutil.FormatDate(&startdate, qutil.Date_Full_Layout),
-			"vip_endtime":    qutil.FormatDate(&enddate, qutil.Date_Full_Layout),
+			"order_money":        param.BigMoney,
+			"order_status":       1,
+			"filter":             string(filter),
+			"order_code":         code,
+			"product_type":       "大会员",
+			"create_time":        qutil.NowFormat(qutil.Date_Full_Layout),
+			"prepay_time":        qutil.NowFormat(qutil.Date_Full_Layout),
+			"user_id":            userId,
+			"pay_way":            "transferAccounts",
+			"original_price":     param.BigMoney,
+			"pay_money":          param.BigPayMoney,
+			"pay_time":           qutil.NowFormat(qutil.Date_Full_Layout),
+			"vip_starttime":      qutil.FormatDate(&startdate, qutil.Date_Full_Layout),
+			"vip_endtime":        qutil.FormatDate(&enddate, qutil.Date_Full_Layout),
+			"is_backstage_order": 1,
+			"salesperson":        param.Salesperson,
 		})
 		log.Println("大会员创建订单", userId, order_id, code)
 		if order_id > 0 {
+			util.JysqlDB.Insert("contract", map[string]interface{}{
+				"order_code":        code,
+				"contract_money":    param.ContractMoney,
+				"contract_file_url": param.ContractUrl,
+				"contract_time":     qutil.NowFormat(qutil.Date_Full_Layout),
+			})
 			sets := map[string]interface{}{
 				"i_member_status":    qutil.If(dateType == 1, param.Level, -param.Level),
 				"i_member_starttime": startdate.Unix(),
@@ -2950,28 +2959,37 @@ func SupplyBigOrder(subStatus, pay_sub_num, free_sub_num, dateType int, now, sta
 		"serversName":    param.ServersName,
 		"isAll":          param.IsAll,
 		"supplys":        param.ServerArr,
+		"remark":         param.Remark,
 	}
 	filter, _ := json.Marshal(filter_map)
 
 	if param.BigPayMoney != 0 {
 		order_id := util.JysqlDB.Insert("dataexport_order", map[string]interface{}{
-			"order_money":    param.BigMoney,
-			"order_status":   1,
-			"filter":         string(filter),
-			"order_code":     code,
-			"product_type":   "大会员",
-			"create_time":    qutil.NowFormat(qutil.Date_Full_Layout),
-			"prepay_time":    qutil.NowFormat(qutil.Date_Full_Layout),
-			"user_id":        userId,
-			"pay_way":        "transferAccounts",
-			"original_price": param.BigMoney,
-			"pay_money":      param.BigPayMoney,
-			"pay_time":       qutil.NowFormat(qutil.Date_Full_Layout),
-			"vip_starttime":  qutil.FormatDate(&startdate, qutil.Date_Full_Layout),
-			"vip_endtime":    qutil.FormatDate(&enddate, qutil.Date_Full_Layout),
+			"order_money":        param.BigMoney,
+			"order_status":       1,
+			"filter":             string(filter),
+			"order_code":         code,
+			"product_type":       "大会员",
+			"create_time":        qutil.NowFormat(qutil.Date_Full_Layout),
+			"prepay_time":        qutil.NowFormat(qutil.Date_Full_Layout),
+			"user_id":            userId,
+			"pay_way":            "transferAccounts",
+			"original_price":     param.BigMoney,
+			"pay_money":          param.BigPayMoney,
+			"pay_time":           qutil.NowFormat(qutil.Date_Full_Layout),
+			"vip_starttime":      qutil.FormatDate(&startdate, qutil.Date_Full_Layout),
+			"vip_endtime":        qutil.FormatDate(&enddate, qutil.Date_Full_Layout),
+			"is_backstage_order": 1,
+			"salesperson":        param.Salesperson,
 		})
 		log.Println("大会员创建订单", userId, order_id, code)
 		if order_id > 0 {
+			util.JysqlDB.Insert("contract", map[string]interface{}{
+				"order_code":        code,
+				"contract_money":    param.ContractMoney,
+				"contract_file_url": param.ContractUrl,
+				"contract_time":     qutil.NowFormat(qutil.Date_Full_Layout),
+			})
 			for _, s := range strings.Split(param.ServersId, ",") {
 				serverId, _ := strconv.Atoi(s)
 				serverData := util.JysqlDB.FindOne("bigmember_service", map[string]interface{}{"id": serverId}, "", "")
@@ -3230,28 +3248,37 @@ func ExtendBigOrder(subStatus, pay_sub_num, free_sub_num int, now, startdate, en
 		"serversName":    param.ServersName,
 		"isAll":          param.IsAll,
 		"supplys":        param.ServerArr,
+		"remark":         param.Remark,
 	}
 	filter, _ := json.Marshal(filter_map)
 
 	if param.BigPayMoney != 0 {
 		order_id := util.JysqlDB.Insert("dataexport_order", map[string]interface{}{
-			"order_money":    param.BigMoney,
-			"order_status":   1,
-			"filter":         string(filter),
-			"order_code":     code,
-			"product_type":   "大会员",
-			"create_time":    qutil.NowFormat(qutil.Date_Full_Layout),
-			"prepay_time":    qutil.NowFormat(qutil.Date_Full_Layout),
-			"user_id":        userId,
-			"pay_way":        "transferAccounts",
-			"original_price": param.BigMoney,
-			"pay_money":      param.BigPayMoney,
-			"pay_time":       qutil.NowFormat(qutil.Date_Full_Layout),
-			"vip_starttime":  qutil.FormatDate(&startdate, qutil.Date_Full_Layout),
-			"vip_endtime":    qutil.FormatDate(&enddate, qutil.Date_Full_Layout),
+			"order_money":        param.BigMoney,
+			"order_status":       1,
+			"filter":             string(filter),
+			"order_code":         code,
+			"product_type":       "大会员",
+			"create_time":        qutil.NowFormat(qutil.Date_Full_Layout),
+			"prepay_time":        qutil.NowFormat(qutil.Date_Full_Layout),
+			"user_id":            userId,
+			"pay_way":            "transferAccounts",
+			"original_price":     param.BigMoney,
+			"pay_money":          param.BigPayMoney,
+			"pay_time":           qutil.NowFormat(qutil.Date_Full_Layout),
+			"vip_starttime":      qutil.FormatDate(&startdate, qutil.Date_Full_Layout),
+			"vip_endtime":        qutil.FormatDate(&enddate, qutil.Date_Full_Layout),
+			"is_backstage_order": 1,
+			"salesperson":        param.Salesperson,
 		})
 		log.Println("大会员创建订单", userId, order_id, code)
 		if order_id > 0 {
+			util.JysqlDB.Insert("contract", map[string]interface{}{
+				"order_code":        code,
+				"contract_money":    param.ContractMoney,
+				"contract_file_url": param.ContractUrl,
+				"contract_time":     qutil.NowFormat(qutil.Date_Full_Layout),
+			})
 			sets := map[string]interface{}{
 				"i_member_endtime": enddate.Unix(),
 			}