فهرست منبع

修改可重复支付

wangkaiyue 6 سال پیش
والد
کامیت
242d8b9fde

+ 122 - 108
src/jfw/front/datareport.go

@@ -30,6 +30,7 @@ func init() {
 func (d *DataReport) ToDataReport() error {
 	reportId := d.GetString("reportId")
 	userId := util.ObjToString(d.GetSession("userId"))
+	openId := util.ObjToString(d.GetSession("s_m_openid"))
 	datareport := public.Mysql.FindOne("jy_datareport", map[string]interface{}{
 		"report_id": reportId,
 	}, "i_price", "")
@@ -37,16 +38,8 @@ func (d *DataReport) ToDataReport() error {
 		return errors.New("未找到此数据")
 	}
 	//查询基本信息回显
-	name, phone, company, email := "", "", "", ""
-	order := public.Mysql.FindOne("jy_datareport_order", map[string]interface{}{
-		"user_id": userId,
-	}, "user_name,user_mail,user_phone,user_company", "")
-	if order != nil {
-		name = util.ObjToString((*order)["user_name"])
-		phone = util.ObjToString((*order)["user_phone"])
-		company = util.ObjToString((*order)["user_company"])
-		email = util.ObjToString((*order)["user_mail"])
-	}
+	name, phone, company, email := public.GetBrforeMsg(userId, openId)
+
 	d.T["name"] = name
 	d.T["phone"] = phone
 	d.T["company"] = company
@@ -71,104 +64,106 @@ func (d *DataReport) ToWxjsPay() {
 	userId := util.ObjToString(d.GetSession("userId"))
 	openId := util.ObjToString(d.GetSession("s_m_openid"))
 	log.Println("openId--", openId, "userId--", userId)
+	var payOrderId int64 //可重复支付修改
 	payStr, errMsg := func() (string, error) {
-		if name == "" || company == "" || !checkEmail(email) || !checkPhone(phone) {
+		if !checkUserName(name) || !checkCompany(company) || !checkEmail(email) || !checkPhone(phone) {
 			return "", errors.New("输入校验不通过")
 		}
+		//检索订单  //可以重复支付
+		// oldOrder := public.Mysql.FindOne("jy_datareport_order", map[string]interface{}{
+		// 	"user_id":   userId,
+		// 	"report_id": reportId,
+		// }, "id,order_status,order_money,prepay_time,pay_way,order_pay,user_name,user_mail,user_phone,user_company", "")
+		// if oldOrder != nil {
+		// 	if util.IntAll((*oldOrder)["order_status"]) != 0 {
+		// 		return "", errors.New("订单状态不能更改")
+		// 	}
+		// 	prepayTime, _ := time.Parse(util.Date_Full_Layout, util.ObjToString((*oldOrder)["prepay_time"]))
+		// 	now := time.Now()
+		// 	orderPay := util.ObjToString((*oldOrder)["order_pay"])
+		// 	//基本信息改变 更新字段
+		// 	if util.ObjToString((*oldOrder)["user_name"]) != name || util.ObjToString((*oldOrder)["user_mail"]) != email ||
+		// 		util.ObjToString((*oldOrder)["user_phone"]) != phone || util.ObjToString((*oldOrder)["user_company"]) != company {
+		// 		updateValue := map[string]interface{}{
+		// 			"user_name":    name,
+		// 			"user_mail":    email,
+		// 			"user_phone":   phone,
+		// 			"user_company": company,
+		// 		}
+		// 		if !public.Mysql.Update("jy_datareport_order", map[string]interface{}{
+		// 			"user_id":   userId,
+		// 			"report_id": reportId,
+		// 		}, updateValue) {
+		// 			return "", errors.New(fmt.Sprintf("更新基本信息出错:%+v", updateValue))
+		// 		}
+		// 	}
+		// 	//订单过期需要重新生成订单
+		// 	if util.ObjToString((*oldOrder)["pay_way"]) != "wx_js" || now.After(prepayTime.Add(time.Hour*2)) || orderPay == "" {
+		// 		//查询订单单价
+		// 		order_money := util.IntAll((*oldOrder)["order_money"])
+		// 		tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "d", d.IP(), openId, "", order_money)
+		// 		if ret == nil || (*ret)["status"] != "1" {
+		// 			return "", errors.New(fmt.Sprintf("微信生成订单出错:%s\n", (*ret)["errcodedes"]))
+		// 		}
+		// 		prepayid := util.ObjToString((*ret)["prepayid"])
+		// 		orderPay = public.WxStruct.GetWxjsPaySign(prepayid)
+		// 		//更新数据库
+		// 		updateValue := map[string]interface{}{
+		// 			"order_money":  order_money,
+		// 			"prepay_time":  util.FormatDate(&now, util.Date_Full_Layout),
+		// 			"pay_way":      "wx_js",
+		// 			"prepay_id":    prepayid,
+		// 			"order_pay":    orderPay,
+		// 			"out_trade_no": tradeno,
+		// 		}
+		// 		if !public.Mysql.Update("jy_datareport_order", map[string]interface{}{
+		// 			"user_id":   userId,
+		// 			"report_id": reportId,
+		// 		}, updateValue) {
+		// 			return "", errors.New(fmt.Sprintf("更新数据库状态出错:%+v", updateValue))
+		// 		}
+		// 	}
+		// 	return orderPay, nil
+		// } else {
+
 		//检索订单
-		oldOrder := public.Mysql.FindOne("jy_datareport_order", map[string]interface{}{
-			"user_id":   userId,
+		datareport := public.Mysql.FindOne("jy_datareport", map[string]interface{}{
 			"report_id": reportId,
-		}, "id,order_status,order_money,prepay_time,pay_way,order_pay,user_name,user_mail,user_phone,user_company", "")
-
-		if oldOrder != nil {
-			if util.IntAll((*oldOrder)["order_status"]) != 0 {
-				return "", errors.New("订单状态不能更改")
-			}
-			prepayTime, _ := time.Parse(util.Date_Full_Layout, util.ObjToString((*oldOrder)["prepay_time"]))
-			now := time.Now()
-			orderPay := util.ObjToString((*oldOrder)["order_pay"])
-			//基本信息改变 更新字段
-			if util.ObjToString((*oldOrder)["user_name"]) != name || util.ObjToString((*oldOrder)["user_mail"]) != email ||
-				util.ObjToString((*oldOrder)["user_phone"]) != phone || util.ObjToString((*oldOrder)["user_company"]) != company {
-				updateValue := map[string]interface{}{
-					"user_name":    name,
-					"user_mail":    email,
-					"user_phone":   phone,
-					"user_company": company,
-				}
-				if !public.Mysql.Update("jy_datareport_order", map[string]interface{}{
-					"user_id":   userId,
-					"report_id": reportId,
-				}, updateValue) {
-					return "", errors.New(fmt.Sprintf("更新基本信息出错:%+v", updateValue))
-				}
-			}
-			//订单过期需要重新生成订单
-			if util.ObjToString((*oldOrder)["pay_way"]) != "wx_js" || now.After(prepayTime.Add(time.Hour*2)) || orderPay == "" {
-				//查询订单单价
-				order_money := util.IntAll((*oldOrder)["order_money"])
-				tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "d", d.IP(), openId, "", order_money)
-				if ret == nil || (*ret)["status"] != "1" {
-					return "", errors.New(fmt.Sprintf("微信生成订单出错:%s\n", (*ret)["errcodedes"]))
-				}
-				prepayid := util.ObjToString((*ret)["prepayid"])
-				orderPay = public.WxStruct.GetWxjsPaySign(prepayid)
-				//更新数据库
-				updateValue := map[string]interface{}{
-					"order_money":  order_money,
-					"prepay_time":  util.FormatDate(&now, util.Date_Full_Layout),
-					"pay_way":      "wx_js",
-					"prepay_id":    prepayid,
-					"order_pay":    orderPay,
-					"out_trade_no": tradeno,
-				}
-				if !public.Mysql.Update("jy_datareport_order", map[string]interface{}{
-					"user_id":   userId,
-					"report_id": reportId,
-				}, updateValue) {
-					return "", errors.New(fmt.Sprintf("更新数据库状态出错:%+v", updateValue))
-				}
-			}
-			return orderPay, nil
-		} else {
-			//检索订单
-			datareport := public.Mysql.FindOne("jy_datareport", map[string]interface{}{
-				"report_id": reportId,
-			}, "i_price", "")
-			if datareport == nil {
-				return "", errors.New("未知数据报告")
-			}
-			order_money := util.IntAll((*datareport)["i_price"])
-			now := time.Now()
-			tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "d", d.IP(), openId, "", order_money)
-			if ret == nil || (*ret)["status"] != "1" {
-				return "", errors.New("微信生成订单出错")
-			}
-			prepayid := util.ObjToString((*ret)["prepayid"])
-			orderPay := public.WxStruct.GetWxjsPaySign(prepayid)
-			insertValue := map[string]interface{}{
-				"order_money":    order_money,
-				"order_status":   0,
-				"service_status": 0,
-				"user_name":      name,
-				"prepay_id":      prepayid,
-				"order_pay":      orderPay,
-				"out_trade_no":   tradeno,
-				"report_id":      reportId,
-				"product_type":   "数据报告",
-				"create_time":    util.FormatDate(&now, util.Date_Full_Layout),
-				"prepay_time":    util.FormatDate(&now, util.Date_Full_Layout),
-				"user_mail":      email,
-				"user_phone":     phone,
-				"pay_way":        "wx_js",
-				"user_id":        userId, //20190719 移动端数据导出 生订单添加用户id
-			}
-			if public.Mysql.Insert("jy_datareport_order", insertValue) == 0 {
-				return "", errors.New(fmt.Sprintf("插入数据库出错:%+v", insertValue))
-			}
-			return orderPay, nil
+		}, "i_price", "")
+		if datareport == nil {
+			return "", errors.New("未知数据报告")
+		}
+		order_money := util.IntAll((*datareport)["i_price"])
+		now := time.Now()
+		tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "d", d.IP(), openId, "", order_money)
+		if ret == nil || (*ret)["status"] != "1" {
+			return "", errors.New("微信生成订单出错")
+		}
+		prepayid := util.ObjToString((*ret)["prepayid"])
+		orderPay := public.WxStruct.GetWxjsPaySign(prepayid)
+		insertValue := map[string]interface{}{
+			"order_money":    order_money,
+			"order_status":   0,
+			"service_status": 0,
+			"user_name":      name,
+			"prepay_id":      prepayid,
+			"order_pay":      orderPay,
+			"out_trade_no":   tradeno,
+			"report_id":      reportId,
+			"product_type":   "数据报告",
+			"create_time":    util.FormatDate(&now, util.Date_Full_Layout),
+			"prepay_time":    util.FormatDate(&now, util.Date_Full_Layout),
+			"user_mail":      email,
+			"user_phone":     phone,
+			"pay_way":        "wx_js",
+			"user_id":        userId,
+			"user_company":   company,
 		}
+		if payOrderId = public.Mysql.Insert("jy_datareport_order", insertValue); payOrderId == 0 {
+			return "", errors.New(fmt.Sprintf("插入数据库出错:%+v", insertValue))
+		}
+		return orderPay, nil
+		//}
 	}()
 	errMsgStr := ""
 	if errMsg != nil {
@@ -176,20 +171,21 @@ func (d *DataReport) ToWxjsPay() {
 		errMsgStr = strings.Split(errMsg.Error(), ":")[0]
 	}
 	d.ServeJson(map[string]interface{}{
-		"success": util.If(errMsg == nil, true, false).(bool),
-		"payStr":  payStr,
-		"showErr": errMsgStr,
+		"success":    util.If(errMsg == nil, true, false).(bool),
+		"payStr":     payStr,
+		"showErr":    errMsgStr,
+		"payOrderId": payOrderId,
 	})
 }
 
 //查询是否支付完成
 func (d *DataReport) IsPaySuccess() {
 	userId := util.ObjToString(d.GetSession("userId"))
-	report_id := d.GetString("report_id")
+	payOrderId := d.GetString("payOrderId")
 	success := false
 	orderdata := public.Mysql.FindOne("jy_datareport_order", map[string]interface{}{
-		"user_id":   userId,
-		"report_id": report_id,
+		"user_id": userId,
+		"id":      payOrderId,
 	}, "order_status", "")
 	if orderdata != nil && util.IntAll((*orderdata)["order_status"]) == 1 {
 		success = true
@@ -273,6 +269,24 @@ func (d *DataReport) PayCallback() {
 	}
 }
 
+func checkUserName(value string) bool {
+	if value == "" {
+		return false
+	}
+	if len([]rune(value)) < 2 || len([]rune(value)) > 50 {
+		return false
+	}
+	return true
+}
+func checkCompany(value string) bool {
+	if value == "" {
+		return false
+	}
+	if len([]rune(value)) < 2 || len([]rune(value)) > 100 {
+		return false
+	}
+	return true
+}
 func checkEmail(value string) bool {
 	var emailPattern = regexp.MustCompile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$")
 	return emailPattern.MatchString(value)

+ 141 - 129
src/jfw/modules/app/src/app/front/datareport.go

@@ -31,6 +31,7 @@ func init() {
 
 func (d *DataReport) ToDataReport(reportId string) error {
 	userId := util.ObjToString(d.GetSession("userId"))
+	openId := util.ObjToString(d.GetSession("a_m_openid"))
 	datareport := public.Mysql.FindOne("jy_datareport", map[string]interface{}{
 		"report_id": reportId,
 	}, "i_price", "")
@@ -38,16 +39,8 @@ func (d *DataReport) ToDataReport(reportId string) error {
 		return errors.New("未找到此数据")
 	}
 	//查询基本信息回显
-	name, phone, company, email := "", "", "", ""
-	order := public.Mysql.FindOne("jy_datareport_order", map[string]interface{}{
-		"user_id": userId,
-	}, "user_name,user_mail,user_phone,user_company", "")
-	if order != nil {
-		name = util.ObjToString((*order)["user_name"])
-		phone = util.ObjToString((*order)["user_phone"])
-		company = util.ObjToString((*order)["user_company"])
-		email = util.ObjToString((*order)["user_mail"])
-	}
+	name, phone, company, email := public.GetBrforeMsg(userId, openId)
+
 	d.T["name"] = name
 	d.T["phone"] = phone
 	d.T["company"] = company
@@ -71,129 +64,129 @@ func (d *DataReport) ToAppPay() {
 	reportId := d.GetString("s_reportId")
 	pay_way := d.GetString("s_payway")
 	userId := util.ObjToString(d.GetSession("userId"))
-	openId := util.ObjToString(d.GetSession("s_m_openid"))
-
-	log.Println("openId--", openId, "userId--", userId)
+	var payOrderId int64 //可重复支付修改
 	payStr, errMsg := func() (string, error) {
-		if name == "" || company == "" || !checkEmail(email) || !checkPhone(phone) || (pay_way != "wx_app" && pay_way != "ali_app") {
+		if !checkUserName(name) || !checkCompany(company) || !checkEmail(email) || !checkPhone(phone) {
 			return "", errors.New("输入校验不通过")
 		}
+		//可重复支付修改
 		//检索订单
-		oldOrder := public.Mysql.FindOne("jy_datareport_order", map[string]interface{}{
-			"user_id":   userId,
-			"report_id": reportId,
-		}, "id,order_status,order_money,prepay_time,pay_way,order_pay,user_name,user_mail,user_phone,user_company", "")
+		// oldOrder := public.Mysql.FindOne("jy_datareport_order", map[string]interface{}{
+		// 	"user_id":   userId,
+		// 	"report_id": reportId,
+		// }, "id,order_status,order_money,prepay_time,pay_way,order_pay,user_name,user_mail,user_phone,user_company", "")
 
-		if oldOrder != nil {
-			if util.IntAll((*oldOrder)["order_status"]) != 0 {
-				return "", errors.New("订单状态不能更改")
-			}
-			prepayTime, _ := time.Parse(util.Date_Full_Layout, util.ObjToString((*oldOrder)["prepay_time"]))
-			now := time.Now()
-			orderPay := util.ObjToString((*oldOrder)["order_pay"])
-			//基本信息改变 更新字段
-			if util.ObjToString((*oldOrder)["user_name"]) != name || util.ObjToString((*oldOrder)["user_mail"]) != email ||
-				util.ObjToString((*oldOrder)["user_phone"]) != phone || util.ObjToString((*oldOrder)["user_company"]) != company {
-				updateValue := map[string]interface{}{
-					"user_name":    name,
-					"user_mail":    email,
-					"user_phone":   phone,
-					"user_company": company,
-				}
-				if !public.Mysql.Update("jy_datareport_order", map[string]interface{}{
-					"user_id":   userId,
-					"report_id": reportId,
-				}, updateValue) {
-					return "", errors.New(fmt.Sprintf("更新基本信息出错:%+v", updateValue))
-				}
-			}
+		// if oldOrder != nil {
+		// 	if util.IntAll((*oldOrder)["order_status"]) != 0 {
+		// 		return "", errors.New("订单状态不能更改")
+		// 	}
+		// 	prepayTime, _ := time.Parse(util.Date_Full_Layout, util.ObjToString((*oldOrder)["prepay_time"]))
+		// 	now := time.Now()
+		// 	orderPay := util.ObjToString((*oldOrder)["order_pay"])
+		// 	//基本信息改变 更新字段
+		// 	if util.ObjToString((*oldOrder)["user_name"]) != name || util.ObjToString((*oldOrder)["user_mail"]) != email ||
+		// 		util.ObjToString((*oldOrder)["user_phone"]) != phone || util.ObjToString((*oldOrder)["user_company"]) != company {
+		// 		updateValue := map[string]interface{}{
+		// 			"user_name":    name,
+		// 			"user_mail":    email,
+		// 			"user_phone":   phone,
+		// 			"user_company": company,
+		// 		}
+		// 		if !public.Mysql.Update("jy_datareport_order", map[string]interface{}{
+		// 			"user_id":   userId,
+		// 			"report_id": reportId,
+		// 		}, updateValue) {
+		// 			return "", errors.New(fmt.Sprintf("更新基本信息出错:%+v", updateValue))
+		// 		}
+		// 	}
 
-			//订单过期需要重新生成订单
-			if util.ObjToString((*oldOrder)["pay_way"]) != pay_way || now.After(prepayTime.Add(time.Hour*2)) || orderPay == "" {
-				//查询订单单价
-				order_money := util.IntAll((*oldOrder)["order_money"])
-				tradeno, prepayid := "", ""
-				if pay_way == "wx_app" { //"wx_app" 微信支付
-					var ret *map[string]string
-					tradeno, ret = public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "D", d.IP(), openId, "", order_money)
-					if ret == nil || (*ret)["status"] != "1" {
-						return "", errors.New("微信生成订单出错")
-					}
-					prepayid = util.ObjToString((*ret)["prepayid"])
-					orderPay = public.WxStruct.GetAppWxPayStr(prepayid)
-				} else { //"ali_app"支付宝支付
-					var err error
-					orderPay, tradeno, err = pay.Alipay.GetAliPayToken((util.Float64All(order_money)), "dataReport")
-					if err != nil {
-						return "", errors.New(fmt.Sprintf("支付宝订单生成出错:%v", err))
-					}
-				}
-				//更新数据库订单
-				updateValue := map[string]interface{}{
-					"order_money":  order_money,
-					"prepay_time":  util.FormatDate(&now, util.Date_Full_Layout),
-					"pay_way":      pay_way,
-					"prepay_id":    prepayid,
-					"order_pay":    orderPay,
-					"out_trade_no": tradeno,
-				}
-				if !public.Mysql.Update("jy_datareport_order", map[string]interface{}{
-					"user_id":   userId,
-					"report_id": reportId,
-				}, updateValue) {
-					return "", errors.New(fmt.Sprintf("更新数据库状态出错:%+v", updateValue))
-				}
-			}
-			return orderPay, nil
-		} else {
-			//检索订单
-			datareport := public.Mysql.FindOne("jy_datareport", map[string]interface{}{
-				"report_id": reportId,
-			}, "i_price", "")
-			if datareport == nil {
-				return "", errors.New("未知数据报告")
-			}
-			order_money := util.IntAll((*datareport)["i_price"])
-			now := time.Now()
+		// 	//订单过期需要重新生成订单
+		// 	if util.ObjToString((*oldOrder)["pay_way"]) != pay_way || now.After(prepayTime.Add(time.Hour*2)) || orderPay == "" {
+		// 		//查询订单单价
+		// 		order_money := util.IntAll((*oldOrder)["order_money"])
+		// 		tradeno, prepayid := "", ""
+		// 		if pay_way == "wx_app" { //"wx_app" 微信支付
+		// 			var ret *map[string]string
+		// 			tradeno, ret = public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "D", d.IP(), openId, "", order_money)
+		// 			if ret == nil || (*ret)["status"] != "1" {
+		// 				return "", errors.New("微信生成订单出错")
+		// 			}
+		// 			prepayid = util.ObjToString((*ret)["prepayid"])
+		// 			orderPay = public.WxStruct.GetAppWxPayStr(prepayid)
+		// 		} else { //"ali_app"支付宝支付
+		// 			var err error
+		// 			orderPay, tradeno, err = pay.Alipay.GetAliPayToken((util.Float64All(order_money)), "dataReport")
+		// 			if err != nil {
+		// 				return "", errors.New(fmt.Sprintf("支付宝订单生成出错:%v", err))
+		// 			}
+		// 		}
+		// 		//更新数据库订单
+		// 		updateValue := map[string]interface{}{
+		// 			"order_money":  order_money,
+		// 			"prepay_time":  util.FormatDate(&now, util.Date_Full_Layout),
+		// 			"pay_way":      pay_way,
+		// 			"prepay_id":    prepayid,
+		// 			"order_pay":    orderPay,
+		// 			"out_trade_no": tradeno,
+		// 		}
+		// 		if !public.Mysql.Update("jy_datareport_order", map[string]interface{}{
+		// 			"user_id":   userId,
+		// 			"report_id": reportId,
+		// 		}, updateValue) {
+		// 			return "", errors.New(fmt.Sprintf("更新数据库状态出错:%+v", updateValue))
+		// 		}
+		// 	}
+		// 	return orderPay, nil
+		// } else {
+		//检索订单
+		datareport := public.Mysql.FindOne("jy_datareport", map[string]interface{}{
+			"report_id": reportId,
+		}, "i_price", "")
+		if datareport == nil {
+			return "", errors.New("未知数据报告")
+		}
+		order_money := util.IntAll((*datareport)["i_price"])
+		now := time.Now()
 
-			tradeno, prepayid, orderPay := "", "", ""
-			if pay_way == "wx_app" { //"wx_app" 微信支付
-				var ret *map[string]string
-				tradeno, ret = public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "D", d.IP(), openId, "", order_money)
-				if ret == nil || (*ret)["status"] != "1" {
-					return "", errors.New("微信生成订单出错")
-				}
-				prepayid = util.ObjToString((*ret)["prepayid"])
-				orderPay = public.WxStruct.GetAppWxPayStr(prepayid)
-			} else { //"ali_app"支付宝支付
-				var err error
-				orderPay, tradeno, err = pay.Alipay.GetAliPayToken((util.Float64All(order_money)), "dataReport")
-				if err != nil {
-					return "", errors.New(fmt.Sprintf("支付宝订单生成出错:%v", err))
-				}
+		tradeno, prepayid, orderPay := "", "", ""
+		if pay_way == "wx_app" { //"wx_app" 微信支付
+			var ret *map[string]string
+			tradeno, ret = public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "D", d.IP(), "", "", order_money)
+			if ret == nil || (*ret)["status"] != "1" {
+				return "", errors.New("微信生成订单出错")
 			}
-			insertValue := map[string]interface{}{
-				"order_money":    order_money,
-				"order_status":   0,
-				"service_status": 0,
-				"user_name":      name,
-				"prepay_id":      prepayid,
-				"order_pay":      orderPay,
-				"out_trade_no":   tradeno,
-				"report_id":      reportId,
-				"product_type":   "数据报告",
-				"create_time":    util.FormatDate(&now, util.Date_Full_Layout),
-				"prepay_time":    util.FormatDate(&now, util.Date_Full_Layout),
-				"user_mail":      email,
-				"user_phone":     phone,
-				"pay_way":        pay_way,
-				"user_id":        userId,
+			prepayid = util.ObjToString((*ret)["prepayid"])
+			orderPay = public.WxStruct.GetAppWxPayStr(prepayid)
+		} else { //"ali_app"支付宝支付
+			var err error
+			orderPay, tradeno, err = pay.Alipay.GetAliPayToken((util.Float64All(order_money)), "dataReport")
+			if err != nil {
+				return "", errors.New(fmt.Sprintf("支付宝订单生成出错:%v", err))
 			}
-			if public.Mysql.Insert("jy_datareport_order", insertValue) == 0 {
-				return "", errors.New(fmt.Sprintf("插入数据库出错:%+v", insertValue))
-			}
-			return orderPay, nil
 		}
+		insertValue := map[string]interface{}{
+			"order_money":    order_money,
+			"order_status":   0,
+			"service_status": 0,
+			"user_name":      name,
+			"prepay_id":      prepayid,
+			"order_pay":      orderPay,
+			"out_trade_no":   tradeno,
+			"report_id":      reportId,
+			"product_type":   "数据报告",
+			"create_time":    util.FormatDate(&now, util.Date_Full_Layout),
+			"prepay_time":    util.FormatDate(&now, util.Date_Full_Layout),
+			"user_mail":      email,
+			"user_phone":     phone,
+			"pay_way":        pay_way,
+			"user_id":        userId,
+			"user_company":   company,
+		}
+		if payOrderId = public.Mysql.Insert("jy_datareport_order", insertValue); payOrderId == 0 {
+			return "", errors.New(fmt.Sprintf("插入数据库出错:%+v", insertValue))
+		}
+		return orderPay, nil
+		//}
 	}()
 	errMsgStr := ""
 	if errMsg != nil {
@@ -201,20 +194,21 @@ func (d *DataReport) ToAppPay() {
 		errMsgStr = strings.Split(errMsg.Error(), ":")[0]
 	}
 	d.ServeJson(map[string]interface{}{
-		"success": util.If(errMsg == nil, true, false).(bool),
-		"payStr":  payStr,
-		"showErr": errMsgStr,
+		"success":    util.If(errMsg == nil, true, false).(bool),
+		"payStr":     payStr,
+		"showErr":    errMsgStr,
+		"payOrderId": payOrderId,
 	})
 }
 
 //查询是否支付完成
 func (d *DataReport) IsPaySuccess() {
 	userId := util.ObjToString(d.GetSession("userId"))
-	report_id := d.GetString("report_id")
+	payOrderId := d.GetString("payOrderId")
 	success := false
 	orderdata := public.Mysql.FindOne("jy_datareport_order", map[string]interface{}{
-		"user_id":   userId,
-		"report_id": report_id,
+		"user_id": userId,
+		"id":      payOrderId,
 	}, "order_status", "")
 	if orderdata != nil && util.IntAll((*orderdata)["order_status"]) == 1 {
 		success = true
@@ -290,6 +284,24 @@ func DataReportCalBakAfter(order_money, cash_fee int, out_trade_no, transaction_
 	return true
 }
 
+func checkUserName(value string) bool {
+	if value == "" {
+		return false
+	}
+	if len([]rune(value)) < 2 || len([]rune(value)) > 50 {
+		return false
+	}
+	return true
+}
+func checkCompany(value string) bool {
+	if value == "" {
+		return false
+	}
+	if len([]rune(value)) < 2 || len([]rune(value)) > 100 {
+		return false
+	}
+	return true
+}
 func checkEmail(value string) bool {
 	var emailPattern = regexp.MustCompile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$")
 	return emailPattern.MatchString(value)

+ 6 - 3
src/jfw/modules/app/src/web/templates/datareport/dataReport_info.html

@@ -205,6 +205,9 @@
                 }
                 
                 $(".btn.enter").on("click",function() {
+                  if(!canpay){
+                    return
+                  }
                   canpay=false
                   $.post("/jyapp/dataReport/toAppPay", {
                       "s_name": s_name,
@@ -221,7 +224,7 @@
                           }else{
                             JyObj.aliPay(r.payStr)
                           }
-                          checkpay()
+                          checkpay(r.payOrderId)
                         }catch(e){
                           alert(e)
                         }
@@ -233,12 +236,12 @@
               })
               //查询是否支付完成
               var interval
-              function checkpay(){
+              function checkpay(orderid){
                 if(interval){
                   clearInterval(interval);
                 }
                 interval=setInterval(function() {
-                  $.post("/jyapp/dataReport/isPaySuccess",{report_id:{{.T.reportId}}},function(r){
+                  $.post("/jyapp/dataReport/isPaySuccess",{report_id:orderid},function(r){
                     if(r.success){
                       window.location.href = "/jyapp/dataReport/paySuccess?email="+s_email;
                     }

+ 2 - 0
src/jfw/pay/dataExportPay.go

@@ -109,6 +109,7 @@ func (p *DataExportPayAction) SacnPay_WaitPay() error {
 }
 func (p *DataExportPayAction) SacnPay_CreateOrder() {
 	defer util.Catch()
+	userId := util.ObjToString(p.GetSession("userId"))
 	openId, _ := p.GetSession("s_m_openid").(string)
 	id := util.SE.Decode4Hex(p.GetString("id"))
 	if openId == "" || id == "" {
@@ -303,6 +304,7 @@ func (p *DataExportPayAction) SacnPay_CreateOrder() {
 					"filter_keys":        filter_keys,
 					"filter_id":          id,
 					"pay_way":            pay_way,
+					"user_id":            userId,
 				})
 				if orderid > 0 {
 					p.SetSession("DataExportVerifyPhone_val", user_phone)

+ 45 - 0
src/jfw/public/dataexport.go

@@ -695,3 +695,48 @@ func SendDatareportMailToPayUser(report_id int, user_mail string, auth []*mail.G
 		log.Printf("%s数据报告发送邮件出错,数据报告id:%d\n", user_mail, report_id)
 	}
 }
+
+//数据报告回显信息
+func GetBrforeMsg(userId, openId string) (name, phone, company, email string) {
+	order := Mysql.FindOne("jy_datareport_order", map[string]interface{}{
+		"user_id": userId,
+	}, "user_name,user_mail,user_phone,user_company", "")
+	if order != nil {
+		name = util.ObjToString((*order)["user_name"])
+		phone = util.ObjToString((*order)["user_phone"])
+		company = util.ObjToString((*order)["user_company"])
+		email = util.ObjToString((*order)["user_mail"])
+	} else {
+		//之前没有数据报告订单查询数据导出 带出公司 手机号 邮箱字段
+		res := Mysql.FindOne("dataexport_order", map[string]interface{}{
+			"user_id": userId,
+		}, "user_mail,user_phone,applybill_company", "create_time desc")
+		if res != nil {
+			email = util.ObjToString((*res)["user_mail"])
+			phone = util.ObjToString((*res)["user_phone"])
+			company = util.ObjToString((*res)["applybill_company"])
+			log.Println(email, ",", phone)
+		}
+		if email == "" || phone == "" || openId == "" {
+			userData, _ := MQFW.FindById("user", userId, `{"o_jy":1,"s_phone":1,"s_m_openid":1}`)
+			if email == "" {
+				o_jy := util.ObjToMap((*userData)["o_jy"])
+				email = util.ObjToString((*o_jy)["s_email"])
+			}
+			if phone == "" {
+				phone = util.ObjToString((*userData)["s_phone"])
+			}
+			if openId == "" {
+				openId = util.ObjToString((*userData)["s_m_openid"])
+			}
+		}
+		//查询开通推送公司名称
+		if openId != "" && company == "" {
+			if myapply, ok := MQFW.FindOne("applysub_user", `{"s_openid":"`+openId+`"}`); ok {
+				company = util.ObjToString((*myapply)["s_company"])
+			}
+		}
+	}
+	log.Println(userId, openId, "0000", name, phone, company, email)
+	return
+}

+ 6 - 4
src/web/templates/weixin/datareport/dataReport_info.html

@@ -175,7 +175,9 @@
                 }
                 
                 $(".btn.enter").on("click",function() {
-                  canpay=false
+                  if(!canpay){
+                    return
+                  }
                   $.post("/front/dataReport/toWxjsPay", {
                       "s_name": s_name,
                       "s_phone": s_phone,
@@ -185,7 +187,7 @@
                   },function(r) {
                       if (r.success) {
                         onBridgeReady(JSON.parse(r.payStr))
-                        checkpay()
+                        checkpay(r.payOrderId)
                       }else{
                          canpay=true
                       }
@@ -193,12 +195,12 @@
               })
               //查询是否支付完成
               var interval
-              function checkpay(){
+              function checkpay(orderid){
                 if(interval){
                   clearInterval(interval);
                 }
                 interval=setInterval(function() {
-                  $.post("/front/dataReport/isPaySuccess",{"report_id":{{.T.reportId}}},function(r){
+                  $.post("/front/dataReport/isPaySuccess",{"payOrderId":orderid},function(r){
                     if(r.success){
                       window.location.href = "/front/dataReport/paySuccess?email="+s_email;
                     }