payment gateway for rpn cn
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

193 lignes
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. }