payment gateway for rpn cn
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

193 rindas
4.0KB

  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "html/template"
  6. "log"
  7. "net/http"
  8. _ "github.com/go-sql-driver/mysql"
  9. )
  10. type Employee struct {
  11. Id int
  12. Name string
  13. City string
  14. }
  15. var md5key = "492815086935204" //for test only
  16. func dbConn() (db *sql.DB) {
  17. dbDriver := "mysql"
  18. dbUser := "sp"
  19. dbPass := "sp"
  20. dbName := "goblog"
  21. db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)
  22. if err != nil {
  23. panic(err.Error())
  24. }
  25. return db
  26. }
  27. var tmpl = template.Must(template.ParseGlob("form/*"))
  28. func Index(w http.ResponseWriter, r *http.Request) {
  29. db := dbConn()
  30. selDB, err := db.Query("SELECT * FROM Employee ORDER BY id DESC")
  31. if err != nil {
  32. panic(err.Error())
  33. }
  34. emp := Employee{}
  35. res := []Employee{}
  36. for selDB.Next() {
  37. var id int
  38. var name, city string
  39. err = selDB.Scan(&id, &name, &city)
  40. if err != nil {
  41. panic(err.Error())
  42. }
  43. emp.Id = id
  44. emp.Name = name
  45. emp.City = city
  46. res = append(res, emp)
  47. }
  48. tmpl.ExecuteTemplate(w, "Index", res)
  49. defer db.Close()
  50. }
  51. func Show(w http.ResponseWriter, r *http.Request) {
  52. db := dbConn()
  53. nId := r.URL.Query().Get("id")
  54. selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
  55. if err != nil {
  56. panic(err.Error())
  57. }
  58. emp := Employee{}
  59. for selDB.Next() {
  60. var id int
  61. var name, city string
  62. err = selDB.Scan(&id, &name, &city)
  63. if err != nil {
  64. panic(err.Error())
  65. }
  66. emp.Id = id
  67. emp.Name = name
  68. emp.City = city
  69. }
  70. tmpl.ExecuteTemplate(w, "Show", emp)
  71. defer db.Close()
  72. }
  73. func New(w http.ResponseWriter, r *http.Request) {
  74. tmpl.ExecuteTemplate(w, "New", nil)
  75. }
  76. func Edit(w http.ResponseWriter, r *http.Request) {
  77. db := dbConn()
  78. nId := r.URL.Query().Get("id")
  79. selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
  80. if err != nil {
  81. panic(err.Error())
  82. }
  83. emp := Employee{}
  84. for selDB.Next() {
  85. var id int
  86. var name, city string
  87. err = selDB.Scan(&id, &name, &city)
  88. if err != nil {
  89. panic(err.Error())
  90. }
  91. emp.Id = id
  92. emp.Name = name
  93. emp.City = city
  94. }
  95. tmpl.ExecuteTemplate(w, "Edit", emp)
  96. defer db.Close()
  97. }
  98. func Insert(w http.ResponseWriter, r *http.Request) {
  99. db := dbConn()
  100. if r.Method == "POST" {
  101. name := r.FormValue("name")
  102. city := r.FormValue("city")
  103. insForm, err := db.Prepare("INSERT INTO Employee(name, city) VALUES(?,?)")
  104. if err != nil {
  105. panic(err.Error())
  106. }
  107. insForm.Exec(name, city)
  108. log.Println("INSERT: Name: " + name + " | City: " + city)
  109. }
  110. defer db.Close()
  111. http.Redirect(w, r, "/", 301)
  112. }
  113. func Update(w http.ResponseWriter, r *http.Request) {
  114. db := dbConn()
  115. if r.Method == "POST" {
  116. name := r.FormValue("name")
  117. city := r.FormValue("city")
  118. id := r.FormValue("uid")
  119. insForm, err := db.Prepare("UPDATE Employee SET name=?, city=? WHERE id=?")
  120. if err != nil {
  121. panic(err.Error())
  122. }
  123. insForm.Exec(name, city, id)
  124. log.Println("UPDATE: Name: " + name + " | City: " + city)
  125. }
  126. defer db.Close()
  127. http.Redirect(w, r, "/", 301)
  128. }
  129. func Delete(w http.ResponseWriter, r *http.Request) {
  130. db := dbConn()
  131. emp := r.URL.Query().Get("id")
  132. delForm, err := db.Prepare("DELETE FROM Employee WHERE id=?")
  133. if err != nil {
  134. panic(err.Error())
  135. }
  136. delForm.Exec(emp)
  137. log.Println("DELETE")
  138. defer db.Close()
  139. http.Redirect(w, r, "/", 301)
  140. }
  141. func StartPay(w http.ResponseWriter, r *http.Request) {
  142. if r.Method != "POST" {
  143. fmt.Fprintf(w, "fuck")
  144. return
  145. }
  146. r.ParseForm()
  147. if !isLeanworkFormValid(r.Form) {
  148. fmt.Fprintf(w, "invalid request")
  149. return
  150. }
  151. for key, value := range r.Form {
  152. fmt.Printf("%s= %s\n", key, value)
  153. fmt.Fprintf(w, "%s= %s\n", key, value)
  154. }
  155. sign := md5LeanworkForm(r.Form)
  156. fmt.Printf("my md5=%s, valid = %t", sign, isLeanworkFormValid(r.Form))
  157. fmt.Fprintf(w, "my md5=%s", sign)
  158. }
  159. func main() {
  160. readConfig()
  161. return
  162. log.Println("Server started on: http://localhost:8080")
  163. http.HandleFunc("/", StartPay)
  164. //http.HandleFunc("/", Index)
  165. http.HandleFunc("/show", Show)
  166. http.HandleFunc("/new", New)
  167. http.HandleFunc("/edit", Edit)
  168. http.HandleFunc("/insert", Insert)
  169. http.HandleFunc("/update", Update)
  170. http.HandleFunc("/delete", Delete)
  171. http.ListenAndServe(":8080", nil)
  172. }