dongfeng-pay/anget/controllers/user_info.go
2021-04-27 15:33:49 +08:00

341 lines
8.5 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 (
"dongfeng-pay/jhagent/sys/enum"
"dongfeng-pay/service/models"
"regexp"
"strings"
)
type UserInfo struct {
KeepSession
}
// @router /user_info/show_modify_ui
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"
}
// 修改用户信息
// @router /user_info/modify_userInfo/?:params [post]
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()
}
// 验证原始密码
// @router /user_info/confirm_pwd/?:params [post]
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()
}
// 设置支付密码
// @router /user_info/set_pay_password/?:params [post]
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()
}
// 验证原始支付密码
// @router /user_info/confirm_pay_pwd/?:params [post]
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()
}
// 展示用户信息
// @router /user_info/show_ui
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"
}
// 代理商列表
// @router /user_info/show_merchant_ui
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"
}
// @router /user_info/merchant_list/?:params [get]
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()
}