UserRouter.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. package user
  2. //
  3. //import (
  4. // "context"
  5. // "demo/configs"
  6. // "demo/data/dao/manage"
  7. // "demo/data/domain"
  8. // "demo/router"
  9. // "demo/share"
  10. // "demo/util"
  11. // "fmt"
  12. // "github.com/gin-gonic/gin"
  13. // "github.com/mojocn/base64Captcha"
  14. // "github.com/spf13/cast"
  15. // "log"
  16. // "math/big"
  17. // "net/http"
  18. // "regexp"
  19. // "strconv"
  20. // "time"
  21. //)
  22. //
  23. //var ctx = context.Background()
  24. //
  25. //func UserRouth(engine *gin.RouterGroup) {
  26. // user := engine.Group("/user")
  27. // {
  28. // user.POST("/login", login)
  29. // user.POST("/register", register)
  30. // user.POST("/registerCode", registerCode)
  31. //
  32. // user.POST("/sendSms", SendVerificationCode)
  33. // user.GET("/captcha", VerificationCode)
  34. // }
  35. //}
  36. //
  37. //func VerificationCode(c *gin.Context) {
  38. // // 配置
  39. // driver := base64Captcha.NewDriverDigit(80, 240, 4, 0.5, 80)
  40. // store := base64Captcha.DefaultMemStore
  41. // captcha := base64Captcha.NewCaptcha(driver, store)
  42. //
  43. // // 生成验证码
  44. // id, b64s, answer, err := captcha.Generate()
  45. // if err != nil {
  46. // c.JSON(500, gin.H{"error": err.Error()})
  47. // return
  48. // }
  49. // fmt.Println(answer)
  50. // err = configs.RedisDb.Set(ctx, "VerificationCode_"+id, answer, 0).Err()
  51. // if err != nil {
  52. // fmt.Println(err)
  53. // }
  54. // err = configs.RedisDb.Expire(ctx, "VerificationCode_"+id, 60*time.Second).Err()
  55. // if err != nil {
  56. // panic(err)
  57. // }
  58. // // 返回验证码图片
  59. // c.JSON(200, gin.H{
  60. // "message": "获取成功!!!",
  61. // "expires": time.Now().Add(time.Minute * 5).Unix(),
  62. // "code": 200,
  63. // "data": map[string]string{"id": id, "image": b64s},
  64. // })
  65. //
  66. //}
  67. //
  68. //func login(c *gin.Context) {
  69. // data := share.GetJsonAnyParam(c)
  70. // var user domain.User
  71. // var err error
  72. // username, _ := data("username")
  73. // password, _ := data("password")
  74. // t, _ := data("type")
  75. // // 定义正则表达式
  76. //
  77. // if cast.ToString(t) == "email" {
  78. // regexPattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
  79. // // 编译正则表达式
  80. // reg, err := regexp.Compile(regexPattern)
  81. // if err != nil {
  82. // fmt.Println("编译正则表达式时出错:", err)
  83. // return
  84. // }
  85. // //判断是否为邮箱格式
  86. // matched := reg.MatchString(cast.ToString(username))
  87. //
  88. // if !matched {
  89. // fmt.Println("无效的电子邮件格式.")
  90. // c.JSON(http.StatusOK, router.CreateResultError(400, "邮箱格式错误!!!"))
  91. // return
  92. // }
  93. // } else if cast.ToString(t) == "phone" {
  94. // regexPattern := `^1[3-9]\d{9}$`
  95. // // 编译正则表达式
  96. // reg, err := regexp.Compile(regexPattern)
  97. // if err != nil {
  98. // fmt.Println("编译正则表达式时出错:", err)
  99. // return
  100. // }
  101. // //判断是否为邮箱格式
  102. // matched := reg.MatchString(cast.ToString(username))
  103. //
  104. // if !matched {
  105. // fmt.Println("无效的手机号格式.")
  106. // c.JSON(http.StatusOK, router.CreateResultError(400, "手机格式错误!!!"))
  107. // return
  108. // }
  109. // }
  110. //
  111. // user, err = logins(cast.ToString(username), cast.ToString(password), cast.ToString(t))
  112. //
  113. // if err == nil && user.Id != 0 {
  114. // fmt.Println("用户登录成功!!!")
  115. // token, err := share.GenerateToken(cast.ToString(user.Id))
  116. // if err == nil {
  117. // c.Header("auth-sign", token)
  118. // c.JSON(http.StatusOK, router.CreateResultData(map[string]string{"token": token}))
  119. // } else {
  120. // c.JSON(http.StatusOK, router.CreateResultError(400, "生成token失败!!!"))
  121. // }
  122. // } else {
  123. // fmt.Println("用户登录失败!!!")
  124. // c.JSON(http.StatusOK, router.CreateResultError(401, "用户密码错误!!!"))
  125. // }
  126. //}
  127. //
  128. //func registerCode(c *gin.Context) {
  129. // data := share.GetJsonAnyParam(c)
  130. // phone, _ := data("phone")
  131. // //判断是否为手机格式
  132. // if !checkPhone(c, cast.ToString(phone)) {
  133. // return
  134. // }
  135. // //判断是否已经注册
  136. // b, err := existsPhone(cast.ToString(phone))
  137. // if err != nil {
  138. // fmt.Println(err)
  139. // c.JSON(http.StatusOK, router.CreateResultError(200, "数据库错误!!!"))
  140. // return
  141. // }
  142. // if b {
  143. // c.JSON(http.StatusOK, router.CreateResultError(200, "手机号已注册!!!"))
  144. // return
  145. // }
  146. // //判断是否重复注册
  147. // get := configs.RedisDb.Exists(ctx, "PhoneVerificationCodeTime_"+cast.ToString(phone))
  148. // if get.Val() == 1 {
  149. // c.JSON(http.StatusOK, router.CreateResultError(200, "验证码已经发送,请等待"))
  150. // return
  151. // }
  152. //
  153. // //发送短信
  154. // //sms := sendSms(b, cast.ToString(phone))
  155. // //TODO 模拟发送短信
  156. // sms := testSendSms()
  157. // fmt.Println("发送成功!!!:验证码为:", sms)
  158. // configs.RedisDb.Set(ctx, "PhoneVerificationCode_"+cast.ToString(phone), sms, 60*5*time.Second)
  159. // configs.RedisDb.Set(ctx, "PhoneVerificationCodeTime_"+cast.ToString(phone), time.Now(), 60*time.Second)
  160. // c.JSON(http.StatusOK, router.CreateResult())
  161. //
  162. //}
  163. //
  164. //func testSendSms() string {
  165. // mins := big.NewInt(100000)
  166. // maxs := big.NewInt(999999)
  167. // randomNum := share.RandomInt(mins, maxs)
  168. // //if matched {
  169. // // //bools, err = configs.Engine.Table("user").Where("username = ?", username).Exist(&user)
  170. // //
  171. // // share.SendMail(username, strconv.Itoa(int(randomNum.Int64())))
  172. // //
  173. // //} else {
  174. // // share.SendSms(strconv.Itoa(int(randomNum.Int64())), username)
  175. // //}
  176. // return randomNum.String()
  177. //}
  178. //
  179. //func register(c *gin.Context) {
  180. //
  181. // data := share.GetJsonAnyParam(c)
  182. //
  183. // username, _ := data("username")
  184. // password, _ := data("password")
  185. // code, _ := data("code")
  186. // phone, _ := data("phone")
  187. //
  188. // if !checkEmail(c, cast.ToString(username)) {
  189. // return
  190. // }
  191. // if !checkPhone(c, cast.ToString(phone)) {
  192. // return
  193. // }
  194. // if !checkCode(c, cast.ToString(code)) {
  195. // return
  196. // }
  197. // if !checkPassword(c, cast.ToString(password)) {
  198. // return
  199. // }
  200. // // 验证验证码
  201. // get := configs.RedisDb.Get(ctx, "PhoneVerificationCode_"+cast.ToString(phone))
  202. // fmt.Println(code, get.Val())
  203. // if code != get.Val() {
  204. // c.JSON(http.StatusOK, router.CreateResultError(400, "验证码错误!"))
  205. // return
  206. // }
  207. // configs.RedisDb.Del(ctx, "PhoneVerificationCode_"+cast.ToString(phone))
  208. //
  209. // //判断是否已经注册
  210. // b, err := GetUserByPhoneOrEmail(cast.ToString(phone), cast.ToString(username))
  211. // if err != nil {
  212. // c.JSON(http.StatusOK, router.CreateResultError(400, "验证手机号及用户名,数据错误"))
  213. // return
  214. // }
  215. // if b {
  216. // c.JSON(http.StatusOK, router.CreateResultError(400, "手机号或邮箱已注册!!!"))
  217. // return
  218. // }
  219. //
  220. // timestamp := time.Now().Unix()
  221. // user := domain.User{
  222. // Username: cast.ToString(username),
  223. // Password: cast.ToString(password),
  224. // Creation_time: int(timestamp),
  225. // Status: 0,
  226. // Role_id: 2,
  227. // Phone: cast.ToString(phone),
  228. // Email: cast.ToString(username),
  229. // Name: cast.ToString(username),
  230. // RecommendCode: fmt.Sprint(strconv.FormatInt(timestamp, 16), util.RandomArrays(13, 62)),
  231. // }
  232. //
  233. // user, err = SaveNewUser(user)
  234. // if err != nil {
  235. // fmt.Println(err)
  236. // c.JSON(http.StatusOK, router.CreateResultError(400, "数据库错误!!!"))
  237. // return
  238. // }
  239. // if user.Id != 0 {
  240. // fmt.Println("用户注册成功!!!")
  241. // c.JSON(http.StatusOK, router.CreateResultData(map[string]any{"user": user}))
  242. // //用户钱包添加
  243. // manage.SaveUserWallet(&domain.UserWallet{UserId: user.Id})
  244. //
  245. // return
  246. // } else {
  247. // fmt.Println("用户注册失败!!!")
  248. // c.JSON(http.StatusOK, router.CreateResultError(400, "用户注册失败!!!"))
  249. // return
  250. // }
  251. //}
  252. //
  253. //func checkEmail(c *gin.Context, email string) bool {
  254. // //// 定义正则表达式
  255. // regexPattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
  256. // reg, err := regexp.Compile(regexPattern)
  257. // if err != nil {
  258. // fmt.Println("Error compiling regex:", err)
  259. // c.JSON(500, router.CreateResultError(500, "邮箱格式错误!!!"))
  260. // return false
  261. // }
  262. // //判断是否为邮箱格式
  263. // matched := reg.MatchString(cast.ToString(email))
  264. // if !matched {
  265. // fmt.Println("Error compiling regex:", err)
  266. // c.JSON(500, router.CreateResultError(500, "邮箱格式错误!!!"))
  267. // return false
  268. // }
  269. // return true
  270. //}
  271. //func checkPhone(c *gin.Context, phone string) bool {
  272. // //// 定义正则表达式
  273. // regexPattern := `^1[3-9]\d{9}$`
  274. // reg, err := regexp.Compile(regexPattern)
  275. // if err != nil {
  276. // fmt.Println("1 Error compiling regex:", err)
  277. // c.JSON(200, router.CreateResultError(500, "手机号格式错误!!!"))
  278. // return false
  279. // }
  280. // matched := reg.MatchString(cast.ToString(phone))
  281. // if !matched {
  282. // fmt.Println("2 Error compiling regex:", err)
  283. // c.JSON(200, router.CreateResultError(500, "手机号格式错误!!!"))
  284. // return false
  285. // }
  286. // return true
  287. //}
  288. //func checkPassword(c *gin.Context, email string) bool {
  289. // //// 定义正则表达式
  290. // regexPattern := `^[a-zA-Z0-9,./<>?;'\\:"|\[\]{}~!@#$%^&*()_+=-]{6,32}$`
  291. // reg, err := regexp.Compile(regexPattern)
  292. // if err != nil {
  293. // fmt.Println("Error compiling regex:", err)
  294. // c.JSON(500, router.CreateResultError(500, "密码格式错误!!!"))
  295. // return false
  296. // }
  297. // //判断是否为邮箱格式
  298. // matched := reg.MatchString(cast.ToString(email))
  299. // if !matched {
  300. // fmt.Println("Error compiling regex:", err)
  301. // c.JSON(500, router.CreateResultError(500, "密码格式错误!!!"))
  302. // return false
  303. // }
  304. // return true
  305. //}
  306. //func checkCode(c *gin.Context, code string) bool {
  307. // //// 定义正则表达式
  308. // regexPattern := `^\d{6}$`
  309. // reg, err := regexp.Compile(regexPattern)
  310. // if err != nil {
  311. // fmt.Println("Error compiling regex:", err)
  312. // c.JSON(500, router.CreateResultError(500, "验证码格式错误!!!"))
  313. // return false
  314. // }
  315. // //判断是否为邮箱格式
  316. // matched := reg.MatchString(cast.ToString(code))
  317. // if !matched {
  318. // fmt.Println("Error compiling regex:", err)
  319. // c.JSON(500, router.CreateResultError(500, "验证码格式错误!!!"))
  320. // return false
  321. // }
  322. //
  323. // return true
  324. //}
  325. //
  326. //// SendVerificationCode 发送验证码
  327. //func SendVerificationCode(c *gin.Context) {
  328. // data := share.GetJsonAnyParam(c)
  329. // var err error
  330. // username, _ := data("username")
  331. // code, _ := data("code")
  332. // codeId, _ := data("codeId")
  333. // val, err := configs.RedisDb.Get(ctx, cast.ToString(codeId)).Result()
  334. // if err != nil {
  335. // log.Fatal(err)
  336. // }
  337. // if val != cast.ToString(code) {
  338. // c.JSON(200, gin.H{"code": 400, "message": "验证码错误!!!"})
  339. // c.Abort()
  340. // return
  341. // }
  342. // // 定义正则表达式
  343. // regexPattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
  344. //
  345. // // 编译正则表达式
  346. // reg, err := regexp.Compile(regexPattern)
  347. // if err != nil {
  348. // fmt.Println("Error compiling regex:", err)
  349. // return
  350. // }
  351. // matched := reg.MatchString(cast.ToString(username))
  352. // sendSms(matched, cast.ToString(username))
  353. // c.JSON(200, gin.H{"code": 200, "message": "发送成功!!!"})
  354. //}