You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package user
import (
"encoding/base64"
"github.com/gin-gonic/gin"
"github.com/golangkit/formatime"
"github.com/skip2/go-qrcode"
"recook/configs"
"recook/internal/back"
"recook/internal/dbc"
"recook/internal/model/user"
"recook/tools"
"time"
)
type DiamondRegisterListReq struct {
Phone string `json:"phone"`
Status string `json:"status" validate:"omitempty,oneof=wait pass refuse"`
}
var statusMap = map[string]int{
"wait": user.WaitForDiamondRegisterStatus,
"pass": user.PassForDiamondRegisterStatus,
"refuse": user.RefuseForDiamondRegisterStatus,
}
// 待注册的钻石用户
func DiamondRegisterList(c *gin.Context) {
var p DiamondRegisterListReq
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
var where user.DiamondRegister
if len(p.Status) > 0 {
where.Status = statusMap[p.Status]
}
if len(p.Phone) > 0 {
where.Phone = p.Phone
}
type res struct {
user.DiamondRegister
Name string `gorm:"column:name" json:"auditManagerName"` /// 审核操作人的用户名应该叫managerName
}
var list []res
dbc.DB.Model(&user.DiamondRegister{}).Select("recook_diamond_register.*, recook_manage_user_info.name").Where(&where).
Joins("left join recook_manage_user_info on recook_diamond_register.audit_manager_id = recook_manage_user_info.id").Find(&list)
back.Suc(c, "操作成功", &list)
}
type AuditDiamondRegisterReq struct {
ID uint `json:"id"`
Status string `json:"status" validate:"oneof=pass refuse"`
Remark string `json:"remark" validate:"max=255"`
}
const ProdRegisterURL = "https://h5.reecook.cn/"
const TestRegisterURL = "http://testh5.reecook.cn/" // 注测试现在是http
// 审核钻石注册用户
func AuditDiamondRegister(c *gin.Context) {
var p AuditDiamondRegisterReq
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
var baseUrl string
if configs.IsProductionEnv() {
baseUrl = ProdRegisterURL
} else {
baseUrl = TestRegisterURL
}
var dr user.DiamondRegister
dbc.DB.Find(&dr, p.ID)
if statusMap[p.Status] == user.PassForDiamondRegisterStatus {
var userInfo user.Information
dbc.DB.Where("id= ?", dr.IntroUserId).First(&userInfo)
dr.RegisterUrl = baseUrl + "#/user/appRegister/" + userInfo.IntroCode
}
dr.Status = statusMap[p.Status]
dr.Remark = p.Remark
var auditUserId = c.MustGet("Manager_ID").(uint)
dr.AuditManangerId = auditUserId
dr.AuditTime = formatime.NewSecondFrom(time.Now())
err = dbc.DB.Save(&dr).Error
if err != nil {
back.Fail(c, "保存失败"+err.Error())
return
}
back.Suc(c, "操作成功", nil)
return
}
type diamondRegisterUrlReq struct {
ID uint `json:"id" validate:"omitempty,numeric"`
Phone string `json:"phone" validate:"omitempty,max=15"`
}
// 返回url的base64二维码图片
func DiamondRegisterUrl(c *gin.Context) {
var p diamondRegisterUrlReq
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
if p.ID == 0 && len(p.Phone) == 0 {
back.Fail(c, "选择错误")
return
}
var dUser user.DiamondRegister
dUser.Phone = p.Phone
dUser.ID = p.ID
if dbc.DB.Where(&dUser).First(&dUser).Error != nil {
back.Fail(c, "用户错误")
return
}
srcByte, err := qrcode.Encode(dUser.RegisterUrl, qrcode.Medium, 256)
if err != nil {
back.Fail(c, err.Error())
return
}
dst := base64.StdEncoding.EncodeToString(srcByte)
back.Suc(c, "操作成功过", "data:image/png;base64,"+dst)
return
}