|
@@ -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)
|