Jelajahi Sumber

订单优化完善

xuzhiheng 2 tahun lalu
induk
melakukan
1d230413ae

+ 47 - 48
src/order/helpUserOrderController.go

@@ -5,7 +5,6 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	"github.com/baiy/Cadmin-server-go/admin"
 	"io/ioutil"
 	"log"
 	"mongodb"
@@ -17,6 +16,8 @@ import (
 	"strings"
 	"time"
 	"util"
+
+	"github.com/baiy/Cadmin-server-go/admin"
 )
 
 // LogicalDelOrder 帮助用户下单逻辑删除订单
@@ -53,7 +54,7 @@ func LogicalDelOrder(context *admin.Context) (interface{}, error) {
 // CreateUserAccount 根据手机号查询用户信息,没有账号创建账号
 func CreateUserAccount(context *admin.Context) (interface{}, error) {
 	param := new(struct {
-		Phone      string `form:"phone"`
+		UserId     string `form:"userId"`
 		CycleUnit  int    `form:"cycleUnit"` //1:天、2:月
 		CycleCount int    `form:"cycleCount"`
 	})
@@ -62,57 +63,55 @@ func CreateUserAccount(context *admin.Context) (interface{}, error) {
 		return nil, err
 	}
 	var (
-		userData *map[string]interface{}
-		ok       bool
-		token    string
-		userId   string
+		token  string
+		userId string
 	)
-	//根据手机号查询用户
-	userData, ok = util.MQFW.FindOne("user", map[string]interface{}{"s_phone": param.Phone})
-	if userData != nil && len(*userData) > 0 && ok {
-		userId = mongodb.BsonIdToSId((*userData)["_id"])
-	} else {
-		userData, ok = util.MQFW.FindOne("user", map[string]interface{}{"s_m_phone": param.Phone})
-		if userData != nil && len(*userData) > 0 && userId == "" {
-			userId = mongodb.BsonIdToSId((*userData)["_id"])
-		} else {
-			//创建用户
-			now := time.Now()
-			data := map[string]interface{}{
-				"i_appid":       2,
-				"s_phone":       param.Phone,
-				"s_password":    "",
-				"l_registedate": now.Unix(),
-				"i_ts_guide":    2,
-				"o_jy": map[string]interface{}{
-					"i_apppush":    1,
-					"i_ratemode":   2,
-					"l_modifydate": now.Unix(),
-				},
-				"s_regsource": "qmx_admin",
+	if len(param.UserId) == 11 {
+		// //根据手机号查询用户
+		// userData, ok = util.MQFW.FindOne("user", map[string]interface{}{"s_phone": param.Phone})
+		// if userData != nil && len(*userData) > 0 && ok {
+		// 	userId = mongodb.BsonIdToSId((*userData)["_id"])
+		// } else {
+		// 	userData, ok = util.MQFW.FindOne("user", map[string]interface{}{"s_m_phone": param.Phone})
+		// 	if userData != nil && len(*userData) > 0 && userId == "" {
+		// 		userId = mongodb.BsonIdToSId((*userData)["_id"])
+		// 	} else {
+		//创建用户
+		now := time.Now()
+		data := map[string]interface{}{
+			"i_appid":       2,
+			"s_phone":       param.UserId,
+			"s_password":    "",
+			"l_registedate": now.Unix(),
+			"i_ts_guide":    2,
+			"o_jy": map[string]interface{}{
+				"i_apppush":    1,
+				"i_ratemode":   2,
+				"l_modifydate": now.Unix(),
+			},
+			"s_regsource": "qmx_admin",
+		}
+		_id := util.MQFW.Save("user", data)
+		//mysql表同步插入用户信息
+		if _id != "" {
+			userId = _id
+			formData := map[string]interface{}{
+				"appid":    config.SysConfigs.AppId,
+				"phone":    param.UserId,
+				"password": "",
 			}
-			_id := util.MQFW.Save("user", data)
-			//mysql表同步插入用户信息
-			if _id != "" {
-				userId = _id
-				formData := map[string]interface{}{
-					"appid":    config.SysConfigs.AppId,
-					"phone":    param.Phone,
-					"password": "",
-				}
-				if !strings.HasPrefix(param.Phone, "9") {
-					log.Println("addBaseUser start")
-					ck := &http.Cookie{}
-					usercenter.AddBaseUser(*util.MQFW, config.SysConfigs.UserCenterUrl, _id, formData, ck)
-					log.Println("addBaseUser end")
-				} else {
-					log.Println("prefix with 9")
-				}
+			if !strings.HasPrefix(param.UserId, "9") {
+				log.Println("addBaseUser start")
+				ck := &http.Cookie{}
+				usercenter.AddBaseUser(*util.MQFW, config.SysConfigs.UserCenterUrl, _id, formData, ck)
+				log.Println("addBaseUser end")
+			} else {
+				log.Println("prefix with 9")
 			}
-
 		}
+	} else if len(param.UserId) == 24 {
+		userId = param.UserId
 	}
-
 	//返回用户信息
 	//str := fmt.Sprintf("userId=%s&tt=%d&tn=%d&sId=%d&sName=%s&t=%d", mongodb.BsonIdToSId((*userData)["_id"]), param.CycleCount, param.CycleUnit, context.User.Id, context.User.Username, time.Now().Unix())
 	//log.Println("拼接字符串str", str)

+ 32 - 15
src/order/optimizeOrder.go

@@ -34,29 +34,31 @@ func AddUpdateRecord(context *admin.Context) (interface{}, error) {
 	if err := json.Unmarshal([]byte(qutil.ObjToString((*orderData)["filter"])), &filterMap); err != nil {
 		return nil, errors.New("修正失败")
 	}
+	updateData, payMoney := map[string]interface{}{}, 0
 	if param.PayMoney != 0 {
 		if strings.Contains(qutil.ObjToString((*orderData)["product_type"]), "大会员") {
-			filterMap["payMoneyUpdate"] = param.PayMoney - qutil.IntAll(filterMap["bigPayMoney"])
+			filterMap["bigPayMoneyUpdate"] = param.PayMoney
+			payMoney = param.PayMoney - qutil.IntAll(filterMap["bigPayMoney"])
+			updateData["pay_money"] = param.PayMoney + param.BigSubMoney + param.SupplyMoney
 		} else {
-			filterMap["payMoneyUpdate"] = param.PayMoney - qutil.IntAll((*orderData)["pay_money"])
+			filterMap["payMoneyUpdate"] = param.PayMoney
+			updateData["pay_money"] = param.PayMoney
+			payMoney = param.PayMoney - qutil.IntAll((*orderData)["pay_money"])
 		}
 	}
 	if param.BigSubMoney != 0 {
-		filterMap["subPayMoneyUpdate"] = param.BigSubMoney - qutil.IntAll(filterMap["subPayMoney"])
+		filterMap["subPayMoneyUpdate"] = param.BigSubMoney
 	}
 	if param.SupplyMoney != 0 {
-		filterMap["supplyPayMoneyUpdate"] = param.SupplyMoney - qutil.IntAll(filterMap["supplyPayMoney"])
-	}
-	updateData := map[string]interface{}{
-		"pay_money": param.PayMoney + param.BigSubMoney + param.SupplyMoney,
+		filterMap["supplyPayMoneyUpdate"] = param.SupplyMoney
 	}
 	if param.OrderMoney != 0 {
 		updateData["order_money"] = param.OrderMoney
-		filterMap["orderMoneyUpdate"] = param.OrderMoney - qutil.IntAll((*orderData)["order_money"])
+		filterMap["orderMoneyUpdate"] = param.OrderMoney
 	}
 	if param.Commission != 0 {
 		updateData["commission"] = param.Commission
-		filterMap["commissionUpdate"] = param.Commission - qutil.IntAll((*orderData)["commission"])
+		filterMap["commissionUpdate"] = param.Commission
 	}
 	if param.ProceduresMoney != 0 {
 		updateData["procedures_money"] = param.ProceduresMoney
@@ -64,17 +66,32 @@ func AddUpdateRecord(context *admin.Context) (interface{}, error) {
 	}
 	filterByte, _ := json.Marshal(filterMap)
 	updateData["filter"] = string(filterByte)
+	returnData := util.JysqlDB.SelectBySql(`select IFNULL(sum(return_money),0) as return_money from return_money_record where order_code=? and state=1`, param.OrderCode)
+	refundData := util.JysqlDB.SelectBySql(`select IFNULL(sum(refund_money),0) as refund_money from refund_record where order_code=?`, param.OrderCode)
+	return_money := qutil.IntAll((*returnData)[0]["return_money"])
+	refund_money := qutil.IntAll((*refundData)[0]["refund_money"])
+	if param.PayMoney+param.BigSubMoney+param.SupplyMoney-param.Commission-param.ProceduresMoney == return_money-refund_money {
+		updateData["return_status"] = 1
+	} else if param.PayMoney+param.BigSubMoney+param.SupplyMoney-param.Commission-param.ProceduresMoney > return_money-refund_money && return_money-refund_money > 0 {
+		updateData["return_status"] = 2
+	}
+	if return_money == refund_money {
+		updateData["refund_status"] = 1
+	} else if return_money > refund_money && refund_money > 0 {
+		updateData["refund_status"] = 2
+	}
 	util.JysqlDB.Update("dataexport_order", map[string]interface{}{"order_code": param.OrderCode}, updateData)
 	util.JysqlDB.Insert("moneyCorrection", map[string]interface{}{
 		"orderCode":        param.OrderCode,
-		"orderMoney":       param.OrderMoney,
-		"payMoney":         param.PayMoney,
-		"bigSubMoney":      param.BigSubMoney,
-		"supplyMoney":      param.SupplyMoney,
-		"commission":       param.Commission,
-		"proceduresMoney":  param.ProceduresMoney,
+		"orderMoney":       param.OrderMoney - qutil.IntAll((*orderData)["order_money"]),
+		"payMoney":         payMoney,
+		"bigSubMoney":      param.BigSubMoney - qutil.IntAll(filterMap["subPayMoney"]),
+		"supplyMoney":      param.SupplyMoney - qutil.IntAll(filterMap["supplyPayMoney"]),
+		"commission":       param.Commission - qutil.IntAll((*orderData)["commission"]),
+		"proceduresMoney":  param.ProceduresMoney - qutil.IntAll((*orderData)["procedures_money"]),
 		"correctionReason": param.CorrectionReason,
 		"createTime":       qutil.NowFormat(qutil.Date_Full_Layout),
+		"createPerson":     context.User.Username,
 	})
 	return map[string]interface{}{"status": 1}, nil
 }

+ 7 - 6
src/order/orderManageController.go

@@ -608,14 +608,15 @@ func ConfirmRefund(context *admin.Context) (interface{}, error) {
 			"refund_type":   param.RefundType,
 		})
 		if okid > 0 {
-			orderData := util.JysqlDB.SelectBySql("select  (IFNULL( a.pay_money, 0 )-IFNULL(a.commission,0)-IFNULL(a.procedures_money,0))-(select  IFNULL(sum(b.return_money),0) from  return_money_record  b where b.order_code=a.order_code and  b.state=1) + (select  IFNULL(sum(c.refund_money),0) from refund_record c where c.order_code=a.order_code) as outstandingPayment,(IFNULL( a.pay_money, 0 )-IFNULL(a.commission,0)-IFNULL(a.procedures_money,0)) as moneys from dataexport_order a where  a.order_code=?", orderCode)
-			outstandingPayment := qutil.IntAll((*orderData)[0]["outstandingPayment"]) //未回款金额
-			moneys := qutil.IntAll((*orderData)[0]["moneys"])                         //应收金额
 			return_status := 0
-			if outstandingPayment == moneys {
+			returnData := util.JysqlDB.SelectBySql(`select IFNULL(sum(return_money),0) as return_money from return_money_record where order_code=? and state=1`, orderCode)
+			refundData := util.JysqlDB.SelectBySql(`select IFNULL(sum(refund_money),0) as refund_money from refund_record where order_code=?`, orderCode)
+			return_money := qutil.IntAll((*returnData)[0]["return_money"])
+			refund_money := qutil.IntAll((*refundData)[0]["refund_money"])
+			if return_money == refund_money {
 				param.RefundStatus = 1
-
-			} else if 0 < outstandingPayment && outstandingPayment < moneys {
+				return_status = 0
+			} else if return_money > refund_money && refund_money > 0 {
 				param.RefundStatus = 2
 				return_status = 2
 			}

+ 18 - 4
src/order/otherOrderService.go

@@ -1458,14 +1458,19 @@ func UpdateBatchReturnInfo(transactionData *map[string]interface{}, orderArr map
 				"filter":           string(filter_map),
 				"pay_time":         (*transactionData)["BNKTIM"],
 			}
+			returnData := util.JysqlDB.SelectBySql(`select IFNULL(sum(return_money),0) as return_money from return_money_record where order_code=? and state=1`, key)
+			refundData := util.JysqlDB.SelectBySql(`select IFNULL(sum(refund_money),0) as refund_money from refund_record where order_code=?`, key)
+			return_moneys := qutil.IntAll((*returnData)[0]["return_money"])
+			refund_money := qutil.IntAll((*refundData)[0]["refund_money"])
+			if return_money+return_moneys == refund_money {
+				updateData["refund_status"] = 1
+			} else if return_money+return_moneys > refund_money && refund_money > 0 {
+				updateData["refund_status"] = 2
+			}
 			if return_money == qutil.IntAll(value["outstandingPayment"]) {
 				updateData["return_status"] = 1
-				updateData["refund_status"] = 0
 			} else {
 				updateData["return_status"] = 2
-				if qutil.IntAll(value["refund_status"]) > 0 {
-					updateData["refund_status"] = 2
-				}
 			}
 			if qutil.IntAll(value["order_status"]) == 0 {
 				updateData["order_status"] = 1
@@ -1523,6 +1528,15 @@ func ManualUpdateBatchReturnInfo(orderArr map[string]map[string]interface{}, ope
 				"filter":           string(filter_map),
 				"pay_time":         param.BNKTIM,
 			}
+			returnData := util.JysqlDB.SelectBySql(`select IFNULL(sum(return_money),0) as return_money from return_money_record where order_code=? and state=1`, key)
+			refundData := util.JysqlDB.SelectBySql(`select IFNULL(sum(refund_money),0) as refund_money from refund_record where order_code=?`, key)
+			return_moneys := qutil.IntAll((*returnData)[0]["return_money"])
+			refund_money := qutil.IntAll((*refundData)[0]["refund_money"])
+			if returnMoney+return_moneys == refund_money {
+				updateData["refund_status"] = 1
+			} else if returnMoney+return_moneys > refund_money && refund_money > 0 {
+				updateData["refund_status"] = 2
+			}
 			if returnMoney == qutil.IntAll(value["outstandingPayment"]) {
 				updateData["return_status"] = 1
 			} else {