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

4 years ago
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
}