mirror of
https://github.com/kongyuebin1/dongfeng-pay.git
synced 2024-12-27 12:42:24 +08:00
333 lines
8.1 KiB
Go
333 lines
8.1 KiB
Go
|
/***************************************************
|
||
|
** @Desc : This file for 用户信息控制
|
||
|
** @Time : 19.12.3 10:38
|
||
|
** @Author : Joker
|
||
|
** @File : user_info
|
||
|
** @Last Modified by : Joker
|
||
|
** @Last Modified time: 19.12.3 10:38
|
||
|
** @Software: GoLand
|
||
|
****************************************************/
|
||
|
package controllers
|
||
|
|
||
|
import (
|
||
|
"agent/models"
|
||
|
"agent/sys/enum"
|
||
|
"regexp"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
type UserInfo struct {
|
||
|
KeepSession
|
||
|
}
|
||
|
|
||
|
func (c *UserInfo) ShowModifyUserInfoUI() {
|
||
|
us := c.GetSession(enum.UserSession)
|
||
|
u := us.(models.AgentInfo)
|
||
|
|
||
|
ranMd5 := encrypt.EncodeMd5([]byte(pubMethod.RandomString(46)))
|
||
|
c.Ctx.SetCookie(enum.UserCookie, ranMd5, enum.CookieExpireTime)
|
||
|
c.Ctx.SetSecureCookie(ranMd5, enum.UserCookie, ranMd5, enum.CookieExpireTime)
|
||
|
c.SetSession(enum.UserCookie, ranMd5)
|
||
|
|
||
|
c.Data["userName"] = u.AgentName
|
||
|
c.TplName = "modify_userInfo.html"
|
||
|
}
|
||
|
|
||
|
// 修改用户信息
|
||
|
func (c *UserInfo) ModifyUserInfo() {
|
||
|
or_pwd := strings.TrimSpace(c.GetString("or_pwd"))
|
||
|
new_pwd := strings.TrimSpace(c.GetString("new_pwd"))
|
||
|
confirm_pwd := strings.TrimSpace(c.GetString("confirm_pwd"))
|
||
|
|
||
|
us := c.GetSession(enum.UserSession)
|
||
|
u := us.(models.AgentInfo)
|
||
|
|
||
|
var (
|
||
|
msg = enum.FailedString
|
||
|
flag = enum.FailedFlag
|
||
|
|
||
|
md bool
|
||
|
ud bool
|
||
|
pwdMd5 string
|
||
|
)
|
||
|
|
||
|
if or_pwd == "" ||
|
||
|
new_pwd == "" ||
|
||
|
confirm_pwd == "" {
|
||
|
msg = "密码不能为空!"
|
||
|
goto stopRun
|
||
|
}
|
||
|
|
||
|
pwdMd5 = encrypt.EncodeMd5([]byte(or_pwd))
|
||
|
if strings.Compare(strings.ToUpper(pwdMd5), u.AgentPassword) != 0 {
|
||
|
msg = "原始密码错误!"
|
||
|
}
|
||
|
|
||
|
md, _ = regexp.MatchString(enum.PasswordReg, new_pwd)
|
||
|
if !md {
|
||
|
msg = "密码只能输入6-20个以字母开头、可带数字、“_”、“.”的字串!"
|
||
|
goto stopRun
|
||
|
}
|
||
|
|
||
|
md, _ = regexp.MatchString(enum.PasswordReg, confirm_pwd)
|
||
|
if !md {
|
||
|
msg = "密码只能输入6-20个以字母开头、可带数字、“_”、“.”的字串!"
|
||
|
goto stopRun
|
||
|
}
|
||
|
|
||
|
if strings.Compare(new_pwd, confirm_pwd) != 0 {
|
||
|
msg = "两次密码不匹配!"
|
||
|
goto stopRun
|
||
|
}
|
||
|
|
||
|
u.AgentPassword = strings.ToUpper(encrypt.EncodeMd5([]byte(new_pwd)))
|
||
|
u.UpdateTime = pubMethod.GetNowTime()
|
||
|
ud = models.UpdateAgentInfo(u)
|
||
|
if ud {
|
||
|
msg = enum.SuccessString
|
||
|
flag = enum.SuccessFlag
|
||
|
|
||
|
// 退出重新登录
|
||
|
c.DelSession(enum.UserSession)
|
||
|
}
|
||
|
|
||
|
stopRun:
|
||
|
c.Data["json"] = pubMethod.JsonFormat(flag, "", msg, "")
|
||
|
c.ServeJSON()
|
||
|
c.StopRun()
|
||
|
}
|
||
|
|
||
|
// 验证原始密码
|
||
|
func (c *UserInfo) ConfirmOriginPwd() {
|
||
|
ori := strings.TrimSpace(c.GetString("c"))
|
||
|
|
||
|
us := c.GetSession(enum.UserSession)
|
||
|
u := us.(models.AgentInfo)
|
||
|
|
||
|
var (
|
||
|
msg = enum.FailedString
|
||
|
flag = enum.FailedFlag
|
||
|
)
|
||
|
|
||
|
pwdMd5 := encrypt.EncodeMd5([]byte(ori))
|
||
|
if strings.Compare(strings.ToUpper(pwdMd5), u.AgentPassword) != 0 {
|
||
|
msg = "原始密码错误!"
|
||
|
} else {
|
||
|
flag = enum.SuccessFlag
|
||
|
}
|
||
|
|
||
|
c.Data["json"] = pubMethod.JsonFormat(flag, "", msg, "")
|
||
|
c.ServeJSON()
|
||
|
c.StopRun()
|
||
|
}
|
||
|
|
||
|
// 设置支付密码
|
||
|
func (c *UserInfo) SetPayPassword() {
|
||
|
or_pwd := strings.TrimSpace(c.GetString("or_pwd"))
|
||
|
new_pwd := strings.TrimSpace(c.GetString("new_pwd"))
|
||
|
confirm_pwd := strings.TrimSpace(c.GetString("confirm_pwd"))
|
||
|
|
||
|
us := c.GetSession(enum.UserSession)
|
||
|
u := us.(models.AgentInfo)
|
||
|
|
||
|
var (
|
||
|
msg = enum.FailedString
|
||
|
flag = enum.FailedFlag
|
||
|
|
||
|
md bool
|
||
|
ud bool
|
||
|
pwdMd5 string
|
||
|
)
|
||
|
|
||
|
if new_pwd == "" || confirm_pwd == "" {
|
||
|
msg = "密码不能为空!"
|
||
|
goto stopRun
|
||
|
}
|
||
|
|
||
|
if u.PayPassword != "" {
|
||
|
pwdMd5 = encrypt.EncodeMd5([]byte(or_pwd))
|
||
|
if strings.Compare(strings.ToUpper(pwdMd5), u.AgentPassword) != 0 {
|
||
|
msg = "原始密码错误!"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
md, _ = regexp.MatchString(enum.PasswordReg, new_pwd)
|
||
|
if !md {
|
||
|
msg = "密码只能输入6-20个以字母开头、可带数字、“_”、“.”的字串!"
|
||
|
goto stopRun
|
||
|
}
|
||
|
|
||
|
md, _ = regexp.MatchString(enum.PasswordReg, confirm_pwd)
|
||
|
if !md {
|
||
|
msg = "密码只能输入6-20个以字母开头、可带数字、“_”、“.”的字串!"
|
||
|
goto stopRun
|
||
|
}
|
||
|
|
||
|
if strings.Compare(new_pwd, confirm_pwd) != 0 {
|
||
|
msg = "两次密码不匹配!"
|
||
|
goto stopRun
|
||
|
}
|
||
|
|
||
|
u.PayPassword = strings.ToUpper(encrypt.EncodeMd5([]byte(new_pwd)))
|
||
|
u.UpdateTime = pubMethod.GetNowTime()
|
||
|
ud = models.UpdateAgentInfo(u)
|
||
|
if ud {
|
||
|
msg = enum.SuccessString
|
||
|
flag = enum.SuccessFlag
|
||
|
|
||
|
// 重新写入缓存信息
|
||
|
c.SetSession(enum.UserSession, u)
|
||
|
}
|
||
|
|
||
|
stopRun:
|
||
|
c.Data["json"] = pubMethod.JsonFormat(flag, "", msg, "")
|
||
|
c.ServeJSON()
|
||
|
c.StopRun()
|
||
|
}
|
||
|
|
||
|
// 验证原始支付密码
|
||
|
func (c *UserInfo) ConfirmOriginPayPwd() {
|
||
|
ori := strings.TrimSpace(c.GetString("c"))
|
||
|
|
||
|
us := c.GetSession(enum.UserSession)
|
||
|
u := us.(models.AgentInfo)
|
||
|
|
||
|
var (
|
||
|
msg = enum.FailedString
|
||
|
flag = enum.SuccessFlag
|
||
|
)
|
||
|
|
||
|
if u.PayPassword != "" {
|
||
|
pwdMd5 := encrypt.EncodeMd5([]byte(ori))
|
||
|
if strings.Compare(strings.ToUpper(pwdMd5), u.AgentPassword) != 0 {
|
||
|
msg = "原始密码错误!"
|
||
|
flag = enum.FailedFlag
|
||
|
}
|
||
|
}
|
||
|
|
||
|
c.Data["json"] = pubMethod.JsonFormat(flag, "", msg, "")
|
||
|
c.ServeJSON()
|
||
|
c.StopRun()
|
||
|
}
|
||
|
|
||
|
// 展示用户信息
|
||
|
func (c *UserInfo) ShowUserInfoUI() {
|
||
|
us := c.GetSession(enum.UserSession)
|
||
|
u := us.(models.AgentInfo)
|
||
|
|
||
|
ranMd5 := encrypt.EncodeMd5([]byte(pubMethod.RandomString(46)))
|
||
|
c.Ctx.SetCookie(enum.UserCookie, ranMd5, enum.CookieExpireTime)
|
||
|
c.Ctx.SetSecureCookie(ranMd5, enum.UserCookie, ranMd5, enum.CookieExpireTime)
|
||
|
c.SetSession(enum.UserCookie, ranMd5)
|
||
|
|
||
|
c.Data["userName"] = u.AgentName
|
||
|
c.TplName = "show_userInfo.html"
|
||
|
}
|
||
|
|
||
|
// 代理商列表
|
||
|
func (c *UserInfo) ShowMerchantUI() {
|
||
|
us := c.GetSession(enum.UserSession)
|
||
|
u := us.(models.AgentInfo)
|
||
|
|
||
|
ranMd5 := encrypt.EncodeMd5([]byte(pubMethod.RandomString(46)))
|
||
|
c.Ctx.SetCookie(enum.UserCookie, ranMd5, enum.CookieExpireTime)
|
||
|
c.Ctx.SetSecureCookie(ranMd5, enum.UserCookie, ranMd5, enum.CookieExpireTime)
|
||
|
c.SetSession(enum.UserCookie, ranMd5)
|
||
|
|
||
|
c.Data["payType"] = enum.GetPayType()
|
||
|
c.Data["status"] = enum.GetOrderStatus()
|
||
|
c.Data["userName"] = u.AgentName
|
||
|
c.TplName = "merchant.html"
|
||
|
}
|
||
|
|
||
|
func (c *UserInfo) MerchantQueryAndListPage() {
|
||
|
us := c.GetSession(enum.UserSession)
|
||
|
u := us.(models.AgentInfo)
|
||
|
|
||
|
mt := make(map[string]string)
|
||
|
mt["belong_agent_uid"] = u.AgentUid
|
||
|
mt["status"] = enum.ACTIVE
|
||
|
|
||
|
// 该代理商下所有正常商户
|
||
|
merchants := models.GetMerchantByParams(mt, -1, 0)
|
||
|
|
||
|
type account struct {
|
||
|
UId string
|
||
|
MerchantName string // 商户名
|
||
|
Mobile string // 手机号
|
||
|
Balance float64 // 账户余额
|
||
|
SettleAmount float64 // 已结算金额
|
||
|
WaitAmount float64 // 待结算金额
|
||
|
LoanAmount float64 // 押款金额
|
||
|
FreezeAmount float64 // 账户冻结金额
|
||
|
PayAmount float64 // 代付中金额
|
||
|
}
|
||
|
|
||
|
type deploy struct {
|
||
|
ChannelName string // 通道名
|
||
|
PlatRate float64 // 平台费率
|
||
|
AgentRate float64 // 代理商费率
|
||
|
}
|
||
|
|
||
|
mtd := make(map[string]string)
|
||
|
mtd["status"] = enum.ACTIVE
|
||
|
var (
|
||
|
count = 0 // 计算该代理商下的商户有多少个通道
|
||
|
accounts []account // 每个商户的账户信息
|
||
|
)
|
||
|
for _, m := range merchants {
|
||
|
mtd["merchant_uid"] = m.MerchantUid
|
||
|
lens := models.GetMerchantDeployLenByMap(mtd)
|
||
|
count += lens
|
||
|
|
||
|
ac := models.GetAccountByUid(m.MerchantUid)
|
||
|
accounts = append(accounts, account{
|
||
|
UId: m.MerchantUid,
|
||
|
MerchantName: m.MerchantName,
|
||
|
Mobile: m.LoginAccount,
|
||
|
Balance: ac.Balance,
|
||
|
SettleAmount: ac.SettleAmount,
|
||
|
WaitAmount: ac.WaitAmount,
|
||
|
LoanAmount: ac.LoanAmount,
|
||
|
FreezeAmount: ac.FreezeAmount,
|
||
|
PayAmount: ac.PayforAmount,
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 每个商户的通道信息
|
||
|
deploys := make(map[string][]deploy)
|
||
|
if count != 0 {
|
||
|
for _, a := range accounts {
|
||
|
mtd["merchant_uid"] = a.UId
|
||
|
|
||
|
mdl := models.GetMerchantDeployListByMap(mtd, -1, 0)
|
||
|
for _, m := range mdl {
|
||
|
road := models.GetRoadInfoByRoadUid(m.SingleRoadUid)
|
||
|
fee := road.BasicFee + m.SingleRoadPlatformRate + m.SingleRoadAgentRate
|
||
|
if fee < 0.00000001 {
|
||
|
fee = road.BasicFee + m.RollRoadPlatformRate + m.RollRoadAgentRate
|
||
|
}
|
||
|
afee := m.SingleRoadAgentRate
|
||
|
if afee < 0.00000001 {
|
||
|
afee = m.RollRoadAgentRate
|
||
|
}
|
||
|
deploys[a.UId] = append(deploys[a.UId], deploy{
|
||
|
ChannelName: road.ProductName,
|
||
|
PlatRate: fee,
|
||
|
AgentRate: afee,
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// 数据回显
|
||
|
out := make(map[string]interface{})
|
||
|
out["ac"] = accounts
|
||
|
out["dp"] = deploys
|
||
|
out["count"] = count
|
||
|
|
||
|
c.Data["json"] = out
|
||
|
c.ServeJSON()
|
||
|
c.StopRun()
|
||
|
}
|