重构gateway和shop模拟商城
parent
2a98cbd9ac
commit
4967a137ec
@ -1,50 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/11/25 14:14
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : consts.go
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/11/25 14:14
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package common
|
|
||||||
|
|
||||||
const (
|
|
||||||
ACTIVE = "active"
|
|
||||||
UNACTIVE = "unactive"
|
|
||||||
DELETE = "delete"
|
|
||||||
REFUND = "refund"
|
|
||||||
ORDERROLL = "order_roll"
|
|
||||||
WAIT = "wait"
|
|
||||||
SUCCESS = "success"
|
|
||||||
FAIL = "fail"
|
|
||||||
YES = "yes"
|
|
||||||
NO = "no"
|
|
||||||
ZERO = 0.0 //0元手续费
|
|
||||||
VERIFY_CODE_LEN = 4 //验证码的长度
|
|
||||||
PAYFOR_FEE = 2.00 //代付手续费
|
|
||||||
PAYFOR_INTERVAL = 5 //每过5分钟执行一次代付
|
|
||||||
|
|
||||||
PLUS_AMOUNT = "plus_amount" //加款操作
|
|
||||||
SUB_AMOUNT = "sub_amount" //减款操作
|
|
||||||
FREEZE_AMOUNT = "freeze_amount" //冻结操作
|
|
||||||
UNFREEZE_AMOUNT = "unfreeze_amount" //解冻操作
|
|
||||||
|
|
||||||
PAYFOR_COMFRIM = "payfor_confirm" //下发带审核
|
|
||||||
PAYFOR_SOLVING = "payfor_solving" //发下处理中
|
|
||||||
PAYFOR_HANDING = "payfor_handing" //手动打款中
|
|
||||||
PAYFOR_BANKING = "payfor_banking" //银行处理中
|
|
||||||
PAYFOR_FAIL = "payfor_fail" //代付失败
|
|
||||||
PAYFOR_SUCCESS = "payfor_success" //代付成功
|
|
||||||
|
|
||||||
PAYFOR_ROAD = "payfor_road" //通道打款
|
|
||||||
PAYFOR_HAND = "payfor_hand" //手动打款
|
|
||||||
PAYFOR_REFUSE = "payfor_refuse" // 拒绝打款
|
|
||||||
|
|
||||||
SELF_API = "self_api" //自助api系统下发
|
|
||||||
SELF_MERCHANT = "self_merchant" //管理手动处理商户下发
|
|
||||||
SELF_HELP = "self_help" //管理自己提现
|
|
||||||
|
|
||||||
PUBLIC = "public" //对公卡
|
|
||||||
PRIVATE = "private" //对私卡
|
|
||||||
)
|
|
@ -1,25 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/11/6 11:37
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : mq_config
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/11/6 11:37
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package common
|
|
||||||
|
|
||||||
import "net"
|
|
||||||
|
|
||||||
const (
|
|
||||||
mqHost = "127.0.0.1"
|
|
||||||
mqPort = "61613"
|
|
||||||
|
|
||||||
MqOrderQuery = "order_query"
|
|
||||||
MQ_PAYFOR_QUERY = "payfor_query"
|
|
||||||
MqOrderNotify = "order_notify"
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetMQAddress() string {
|
|
||||||
return net.JoinHostPort(mqHost, mqPort)
|
|
||||||
}
|
|
@ -1,99 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/29 15:01
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : pay_way_code
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/29 15:01
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package common
|
|
||||||
|
|
||||||
var ScanPayWayCodes = []string{
|
|
||||||
"WEIXIN_SCAN",
|
|
||||||
"UNION_SCAN",
|
|
||||||
"ALI_SCAN",
|
|
||||||
"BAIDU_SCAN",
|
|
||||||
"JD_SCAN",
|
|
||||||
"QQ_SCAN",
|
|
||||||
}
|
|
||||||
|
|
||||||
var H5PayWayCodes = []string{
|
|
||||||
"WEIXIN_H5",
|
|
||||||
"ALI_H5",
|
|
||||||
"QQ_H5",
|
|
||||||
"UNION_H5",
|
|
||||||
"BAIDU_H5",
|
|
||||||
"JD_H5",
|
|
||||||
}
|
|
||||||
|
|
||||||
var SytPayWayCodes = []string{
|
|
||||||
"WEIXIN_SYT",
|
|
||||||
"ALI_SYT",
|
|
||||||
"QQ_SYT",
|
|
||||||
"UNION_SYT",
|
|
||||||
"BAIDU_SYT",
|
|
||||||
"JD_SYT",
|
|
||||||
}
|
|
||||||
|
|
||||||
var FastPayWayCodes = []string{
|
|
||||||
"UNION-FAST",
|
|
||||||
}
|
|
||||||
|
|
||||||
var WebPayWayCode = []string{
|
|
||||||
"UNION-WAP",
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetScanPayWayCodes() []string {
|
|
||||||
return ScanPayWayCodes
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetNameByPayWayCode(code string) string {
|
|
||||||
switch code {
|
|
||||||
case "WEIXIN_SCAN":
|
|
||||||
return "微信扫码"
|
|
||||||
case "UNION_SCAN":
|
|
||||||
return "银联扫码"
|
|
||||||
case "ALI_SCAN":
|
|
||||||
return "支付宝扫码"
|
|
||||||
case "BAIDU_SCAN":
|
|
||||||
return "百度扫码"
|
|
||||||
case "JD_SCAN":
|
|
||||||
return "京东扫码"
|
|
||||||
case "QQ_SCAN":
|
|
||||||
return "QQ扫码"
|
|
||||||
|
|
||||||
case "WEIXIN_H5":
|
|
||||||
return "微信H5"
|
|
||||||
case "UNION_H5":
|
|
||||||
return "银联H5"
|
|
||||||
case "ALI_H5":
|
|
||||||
return "支付宝H5"
|
|
||||||
case "BAIDU_H5":
|
|
||||||
return "百度H5"
|
|
||||||
case "JD_H5":
|
|
||||||
return "京东H5"
|
|
||||||
case "QQ_H5":
|
|
||||||
return "QQ-H5"
|
|
||||||
|
|
||||||
case "WEIXIN_SYT":
|
|
||||||
return "微信收银台"
|
|
||||||
case "UNION_SYT":
|
|
||||||
return "银联收银台"
|
|
||||||
case "ALI_SYT":
|
|
||||||
return "支付宝收银台"
|
|
||||||
case "BAIDU_SYT":
|
|
||||||
return "百度收银台"
|
|
||||||
case "JD_SYT":
|
|
||||||
return "京东收银台"
|
|
||||||
case "QQ_SYT":
|
|
||||||
return "QQ-收银台"
|
|
||||||
|
|
||||||
case "UNION_FAST":
|
|
||||||
return "银联快捷"
|
|
||||||
case "UNION_WAP":
|
|
||||||
return "银联web"
|
|
||||||
default:
|
|
||||||
return "未知"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,68 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for 银行编码
|
|
||||||
** @Time : 19.12.4 10:42
|
|
||||||
** @Author : Joker
|
|
||||||
** @File : bank_info
|
|
||||||
** @Last Modified by : Joker
|
|
||||||
** @Last Modified time: 19.12.4 10:42
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package enum
|
|
||||||
|
|
||||||
const (
|
|
||||||
ICBC = "ICBC"
|
|
||||||
ABC = "ABC"
|
|
||||||
BOC = "BOC"
|
|
||||||
CCB = "CCB"
|
|
||||||
BOCOM = "BOCOM"
|
|
||||||
CNCB = "CNCB"
|
|
||||||
CEB = "CEB"
|
|
||||||
HXB = "HXB"
|
|
||||||
CMBC = "CMBC"
|
|
||||||
GDB = "GDB"
|
|
||||||
CMB = "CMB"
|
|
||||||
CIB = "CIB"
|
|
||||||
SPDB = "SPDB"
|
|
||||||
PSBC = "PSBC"
|
|
||||||
PAB = "PAB"
|
|
||||||
NJCB = "NJCB"
|
|
||||||
NBCB = "NBCB"
|
|
||||||
WZCB = "WZCB"
|
|
||||||
CSCB = "CSCB"
|
|
||||||
CZCB = "CZCB"
|
|
||||||
CCQTGB = "CCQTGB"
|
|
||||||
SHRCB = "SHRCB"
|
|
||||||
BJRCB = "BJRCB"
|
|
||||||
SDB = "SDB"
|
|
||||||
)
|
|
||||||
|
|
||||||
var bankInfo = map[string]string{
|
|
||||||
ICBC: "中国工商银行",
|
|
||||||
ABC: "中国农业银行",
|
|
||||||
BOC: "中国银行",
|
|
||||||
CCB: "中国建设银行",
|
|
||||||
BOCOM: "交通银行",
|
|
||||||
CNCB: "中信银行",
|
|
||||||
CEB: "中国光大银行",
|
|
||||||
HXB: "华夏银行",
|
|
||||||
CMBC: "中国民生银行",
|
|
||||||
GDB: "广发银行",
|
|
||||||
CMB: "招商银行",
|
|
||||||
CIB: "兴业银行",
|
|
||||||
SPDB: "浦发银行",
|
|
||||||
PSBC: "中国邮政储蓄银行",
|
|
||||||
PAB: "平安银行",
|
|
||||||
NJCB: "南京银行",
|
|
||||||
NBCB: "宁波银行",
|
|
||||||
WZCB: "温州市商业银行",
|
|
||||||
CSCB: "长沙银行",
|
|
||||||
CZCB: "浙江稠州商业银行",
|
|
||||||
CCQTGB: "重庆三峡银行",
|
|
||||||
SHRCB: "上海农村商业银行",
|
|
||||||
BJRCB: "北京农商行",
|
|
||||||
SDB: "深圳发展银行",
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetBankInfo() map[string]string {
|
|
||||||
return bankInfo
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for 配置常量
|
|
||||||
** @Time : 2019.04.01 11:45
|
|
||||||
** @Author : Joker
|
|
||||||
** @File : strings
|
|
||||||
** @Last Modified by : Joker
|
|
||||||
** @Last Modified time: 2019-11-29 11:05:48
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package enum
|
|
||||||
|
|
||||||
// 对接云片
|
|
||||||
// 短信配置
|
|
||||||
const (
|
|
||||||
ApiKey = "fd264ab6c43c02c52s40eab1ba"
|
|
||||||
TPL1 = 332236
|
|
||||||
SendSmsUrl = "https://sms.yunpian.com/v2/sms/tpl_single_send.json"
|
|
||||||
)
|
|
||||||
|
|
||||||
// session 配置
|
|
||||||
const (
|
|
||||||
SessionPath = "./sys/temp" // 保存路径
|
|
||||||
SessionExpireTime = 9600 // 有效时间,秒
|
|
||||||
CookieExpireTime = 1800 // 有效时间,秒
|
|
||||||
SmsCookieExpireTime = 60 // 有效时间,秒
|
|
||||||
LocalSessionName = "JOKERSession" // 客户端session名称
|
|
||||||
)
|
|
||||||
|
|
||||||
// 提现限制金额
|
|
||||||
const (
|
|
||||||
WithdrawalMaxAmount = 45000
|
|
||||||
WithdrawalMinAmount = 2
|
|
||||||
SettlementFee = 2 // 提现单笔手续费
|
|
||||||
)
|
|
@ -1,26 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for 系统常量
|
|
||||||
** @Time : 19.11.30 11:28
|
|
||||||
** @Author : Joker
|
|
||||||
** @File : constant
|
|
||||||
** @Last Modified by : Joker
|
|
||||||
** @Last Modified time: 19.11.30 11:28
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package enum
|
|
||||||
|
|
||||||
const (
|
|
||||||
UserSession = "agent_user"
|
|
||||||
UserCookie = "agent_user_cookie_md5"
|
|
||||||
|
|
||||||
DoMainUrl = "/index/ui/"
|
|
||||||
|
|
||||||
PublicAccount = "1" // 对公帐户
|
|
||||||
PrivateDebitAccount = "0" // 对私借记卡
|
|
||||||
SettleSingle = "SELFHELP_SETTLE" // 单笔代付
|
|
||||||
|
|
||||||
ExcelModelName = "batch_daifa_template.xlsx"
|
|
||||||
ExcelModelPath = "static/excel/batch_daifa_template.xlsx"
|
|
||||||
ExcelPath = "static/excel/temp/"
|
|
||||||
ExcelDownloadPath = "static/excel/download/"
|
|
||||||
)
|
|
@ -1,60 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for 支付方式
|
|
||||||
** @Time : 19.12.3 15:24
|
|
||||||
** @Author : Joker
|
|
||||||
** @File : pay_type
|
|
||||||
** @Last Modified by : Joker
|
|
||||||
** @Last Modified time: 19.12.3 15:24
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package enum
|
|
||||||
|
|
||||||
const (
|
|
||||||
WEIXIN_SCAN = "WEIXIN_SCAN"
|
|
||||||
WEIXIN_H5 = "WEIXIN_H5"
|
|
||||||
WEIXIN_SYT = "WEIXIN_SYT"
|
|
||||||
ALI_SCAN = "ALI_SCAN"
|
|
||||||
ALI_H5 = "ALI_H5"
|
|
||||||
ALI_SYT = "ALI_SYT"
|
|
||||||
QQ_SCAN = "QQ_SCAN"
|
|
||||||
QQ_H5 = "QQ_H5"
|
|
||||||
QQ_SYT = "QQ_SYT"
|
|
||||||
UNION_SCAN = "UNION_SCAN"
|
|
||||||
UNION_H5 = "UNION_H5"
|
|
||||||
UNION_PC_WAP = "UNION_PC_WAP"
|
|
||||||
UNION_SYT = "UNION_SYT"
|
|
||||||
UNION_FAST = "UNION_FAST"
|
|
||||||
BAIDU_SCAN = "BAIDU_SCAN"
|
|
||||||
BAIDU_H5 = "BAIDU_H5"
|
|
||||||
BAIDU_SYT = "BAIDU_SYT"
|
|
||||||
JD_SCAN = "JD_SCAN"
|
|
||||||
JD_H5 = "JD_H5"
|
|
||||||
JD_SYT = "JD_SYT"
|
|
||||||
)
|
|
||||||
|
|
||||||
var payType = map[string]string{
|
|
||||||
WEIXIN_SCAN: "微信扫码",
|
|
||||||
WEIXIN_H5: "微信H5",
|
|
||||||
WEIXIN_SYT: "微信收银台",
|
|
||||||
ALI_SCAN: "支付宝扫码",
|
|
||||||
ALI_H5: "支付宝H5",
|
|
||||||
ALI_SYT: "支付宝收银台",
|
|
||||||
QQ_SCAN: "QQ扫码",
|
|
||||||
QQ_H5: "QQ-H5",
|
|
||||||
QQ_SYT: "QQ收银台",
|
|
||||||
UNION_SCAN: "银联扫码",
|
|
||||||
UNION_H5: "银联H5",
|
|
||||||
UNION_PC_WAP: "银联pc-web",
|
|
||||||
UNION_SYT: "银联收银台",
|
|
||||||
UNION_FAST: "银联快捷",
|
|
||||||
BAIDU_SCAN: "百度钱包扫码",
|
|
||||||
BAIDU_H5: "百度钱包H5",
|
|
||||||
BAIDU_SYT: "百度钱包收银台",
|
|
||||||
JD_SCAN: "京东扫码",
|
|
||||||
JD_H5: "京东H5",
|
|
||||||
JD_SYT: "京东收银台",
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPayType() map[string]string {
|
|
||||||
return payType
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for 正则表达式
|
|
||||||
** @Time : 19.12.5 10:25
|
|
||||||
** @Author : Joker
|
|
||||||
** @File : regular_expression
|
|
||||||
** @Last Modified by : Joker
|
|
||||||
** @Last Modified time: 19.12.5 10:25
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package enum
|
|
||||||
|
|
||||||
const (
|
|
||||||
PasswordReg = `^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){5,19}$`
|
|
||||||
MoneyReg = `^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$`
|
|
||||||
MobileReg = `^[1]([3-9])[0-9]{9}$`
|
|
||||||
)
|
|
@ -1,133 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for 状态常量
|
|
||||||
** @Time : 19.11.30 11:12
|
|
||||||
** @Author : Joker
|
|
||||||
** @File : status
|
|
||||||
** @Last Modified by : Joker
|
|
||||||
** @Last Modified time: 19.11.30 11:12
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package enum
|
|
||||||
|
|
||||||
// 成功与否
|
|
||||||
const (
|
|
||||||
FailedFlag = -9
|
|
||||||
FailedString = "操作失败! "
|
|
||||||
FailedToAdmin = "系统内部错误,请联系管理员!"
|
|
||||||
SuccessFlag = 9
|
|
||||||
SuccessString = "操作成功! "
|
|
||||||
)
|
|
||||||
|
|
||||||
// 用户状态
|
|
||||||
const (
|
|
||||||
ACTIVE = "active"
|
|
||||||
FREEZE = "FREEZE"
|
|
||||||
UNACTIVE = "unactive"
|
|
||||||
)
|
|
||||||
|
|
||||||
var userStatus = map[string]string{
|
|
||||||
ACTIVE: "激活",
|
|
||||||
FREEZE: "冻结",
|
|
||||||
UNACTIVE: "冻结",
|
|
||||||
}
|
|
||||||
|
|
||||||
// 用户状态
|
|
||||||
func GetUserStatus() map[string]string {
|
|
||||||
return userStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
// 充值订单状态
|
|
||||||
const (
|
|
||||||
SUCCESS = "success"
|
|
||||||
FAILED = "failed"
|
|
||||||
WAITING_PAYMENT = "wait"
|
|
||||||
)
|
|
||||||
|
|
||||||
var orderStatus = map[string]string{
|
|
||||||
SUCCESS: "交易成功",
|
|
||||||
FAILED: "交易失败",
|
|
||||||
WAITING_PAYMENT: "等待支付",
|
|
||||||
}
|
|
||||||
|
|
||||||
// 充值订单状态
|
|
||||||
func GetOrderStatus() map[string]string {
|
|
||||||
return orderStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
// 投诉订单状态
|
|
||||||
const (
|
|
||||||
YES = "yes"
|
|
||||||
NO = "no"
|
|
||||||
)
|
|
||||||
|
|
||||||
var orderComStatus = map[string]string{
|
|
||||||
YES: "冻结",
|
|
||||||
NO: "未冻结",
|
|
||||||
}
|
|
||||||
|
|
||||||
// 投诉订单状态
|
|
||||||
func GetComOrderStatus() map[string]string {
|
|
||||||
return orderComStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
// 结算订单状态
|
|
||||||
const (
|
|
||||||
WAIT_CONFIRM = "payfor_confirm"
|
|
||||||
REMITTING = "payfor_solving"
|
|
||||||
REMIT_FAIL = "failed"
|
|
||||||
BANK_DEALING = "payfor_banking"
|
|
||||||
REMIT_SUCCESS = "success"
|
|
||||||
)
|
|
||||||
|
|
||||||
var settlementStatus = map[string]string{
|
|
||||||
WAIT_CONFIRM: "等待审核",
|
|
||||||
REMITTING: "打款中",
|
|
||||||
REMIT_FAIL: "打款失败",
|
|
||||||
BANK_DEALING: "银行处理中",
|
|
||||||
REMIT_SUCCESS: "打款成功",
|
|
||||||
}
|
|
||||||
|
|
||||||
// 结算订单状态
|
|
||||||
func GetSettlementStatus() map[string]string {
|
|
||||||
return settlementStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
// 充值订单状态
|
|
||||||
const (
|
|
||||||
RECHARGE = "recharge"
|
|
||||||
REFUND = "refund"
|
|
||||||
FREEZER = "freeze"
|
|
||||||
UNFREEZE = "unfreeze"
|
|
||||||
)
|
|
||||||
|
|
||||||
var rechargeStatus = map[string]string{
|
|
||||||
RECHARGE: "充值",
|
|
||||||
REFUND: "退款",
|
|
||||||
FREEZER: "冻结",
|
|
||||||
UNFREEZE: "解冻",
|
|
||||||
}
|
|
||||||
|
|
||||||
// 充值订单状态
|
|
||||||
func GetRechargeStatus() map[string]string {
|
|
||||||
return rechargeStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
// 历史记录状态
|
|
||||||
const (
|
|
||||||
PLUS_AMOUNT = "plus_amount"
|
|
||||||
SUB_AMOUNT = "sub_amount"
|
|
||||||
FREEZE_AMOUNT = "freeze_amount"
|
|
||||||
UNFREEZE_AMOUNT = "unfreeze_amount"
|
|
||||||
)
|
|
||||||
|
|
||||||
var historyStatus = map[string]string{
|
|
||||||
PLUS_AMOUNT: "加款",
|
|
||||||
SUB_AMOUNT: "减款",
|
|
||||||
FREEZE_AMOUNT: "冻结",
|
|
||||||
UNFREEZE_AMOUNT: "解冻",
|
|
||||||
}
|
|
||||||
|
|
||||||
// 历史记录状态
|
|
||||||
func GetHistoryStatus() map[string]string {
|
|
||||||
return historyStatus
|
|
||||||
}
|
|
@ -1,13 +1,50 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
_ "gateway/message"
|
||||||
_ "gateway/models"
|
_ "gateway/models"
|
||||||
_ "gateway/supplier"
|
"gateway/notify"
|
||||||
beego "github.com/beego/beego/v2/server/web"
|
"gateway/query"
|
||||||
|
_ "gateway/routers"
|
||||||
|
"gateway/service"
|
||||||
|
_ "gateway/supplier/third_party"
|
||||||
|
"github.com/beego/beego/v2/core/logs"
|
||||||
|
"github.com/beego/beego/v2/server/web"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
//启动订单查询消费者
|
RegisterLogs()
|
||||||
beego.BConfig.WebConfig.Session.SessionOn = true
|
web.BConfig.WebConfig.Session.SessionOn = true
|
||||||
beego.Run()
|
|
||||||
|
go notify.CreateOrderNotifyConsumer()
|
||||||
|
//go pay_for.PayForInit()
|
||||||
|
go query.CreatePayForQueryConsumer()
|
||||||
|
go service.OrderSettleInit()
|
||||||
|
go query.CreateSupplierOrderQueryCuConsumer()
|
||||||
|
|
||||||
|
web.Run()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
** 注册日志信息
|
||||||
|
*/
|
||||||
|
func RegisterLogs() {
|
||||||
|
logs.SetLogger(logs.AdapterFile,
|
||||||
|
`{
|
||||||
|
"filename":"../logs/legend.log",
|
||||||
|
"level":4,
|
||||||
|
"maxlines":0,
|
||||||
|
"maxsize":0,
|
||||||
|
"daily":true,
|
||||||
|
"maxdays":10,
|
||||||
|
"color":true
|
||||||
|
}`)
|
||||||
|
|
||||||
|
f := &logs.PatternLogFormatter{
|
||||||
|
Pattern: "%F:%n|%w%t>> %m",
|
||||||
|
WhenFormat: "2006-01-02",
|
||||||
|
}
|
||||||
|
|
||||||
|
logs.RegisterFormatter("pattern", f)
|
||||||
|
_ = logs.SetGlobalFormatter("pattern")
|
||||||
}
|
}
|
||||||
|
@ -1,119 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/16 11:11
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : account
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/16 11:11
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type AccountInfo struct {
|
|
||||||
Id int
|
|
||||||
Status string
|
|
||||||
AccountUid string
|
|
||||||
AccountName string
|
|
||||||
Balance float64 //账户总余额
|
|
||||||
SettleAmount float64 //已经结算的金额
|
|
||||||
LoanAmount float64 //账户押款金额
|
|
||||||
FreezeAmount float64 //账户冻结金额
|
|
||||||
WaitAmount float64 //待结算资金
|
|
||||||
PayforAmount float64 //代付在途金额
|
|
||||||
//AbleBalance float64 //账户可用金额
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const ACCOUNT_INFO = "account_info"
|
|
||||||
|
|
||||||
func InsetAcount(account AccountInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&account)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert account fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAccountByUid(accountUid string) AccountInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var account AccountInfo
|
|
||||||
_, err := o.QueryTable(ACCOUNT_INFO).Filter("account_uid", accountUid).Limit(1).All(&account)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get account by uid fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return account
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAccountLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ACCOUNT_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, err := qs.Limit(-1).OrderBy("-update_time").Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get account len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAccountByMap(params map[string]string, displayCount, offset int) []AccountInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var accountList []AccountInfo
|
|
||||||
qs := o.QueryTable(ACCOUNT_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&accountList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get account by map fail: ", err)
|
|
||||||
}
|
|
||||||
return accountList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAllAccount() []AccountInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var accountList []AccountInfo
|
|
||||||
|
|
||||||
_, err := o.QueryTable(ACCOUNT_INFO).Limit(-1).All(&accountList)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get all account fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return accountList
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateAccount(account AccountInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Update(&account)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update account fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteAccountByUid(accountUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(ACCOUNT_INFO).Filter("account_uid", accountUid).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete account fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/19 14:56
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : account_history_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/19 14:56
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type AccountHistoryInfo struct {
|
|
||||||
Id int
|
|
||||||
AccountUid string
|
|
||||||
AccountName string
|
|
||||||
Type string
|
|
||||||
Amount float64
|
|
||||||
Balance float64
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const ACCOUNT_HISTORY_INFO = "account_history_info"
|
|
||||||
|
|
||||||
func InsertAccountHistory(accountHistory AccountHistoryInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(accountHistory)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert account history fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAccountHistoryLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ACCOUNT_HISTORY_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, err := qs.Limit(-1).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get account history len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAccountHistoryByMap(params map[string]string, displayCount, offset int) []AccountHistoryInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ACCOUNT_HISTORY_INFO)
|
|
||||||
var accountHistoryList []AccountHistoryInfo
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&accountHistoryList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get account history by map fail: ", err)
|
|
||||||
}
|
|
||||||
return accountHistoryList
|
|
||||||
}
|
|
@ -1,162 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/9/19 14:41
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : agent_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/9/19 14:41
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type AgentInfo struct {
|
|
||||||
Id int
|
|
||||||
Status string
|
|
||||||
AgentName string
|
|
||||||
AgentPassword string
|
|
||||||
PayPassword string
|
|
||||||
AgentRemark string
|
|
||||||
AgentUid string
|
|
||||||
AgentPhone string
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const AGENT_INFO = "agent_info"
|
|
||||||
|
|
||||||
func IsEixstByAgentName(agentName string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(AGENT_INFO).Filter("agent_name", agentName).Exist()
|
|
||||||
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsExistByAgentUid(uid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(AGENT_INFO).Filter("agent_uid", uid).Exist()
|
|
||||||
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsEixstByAgentPhone(agentPhone string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(AGENT_INFO).Filter("agent_phone", agentPhone).Exist()
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func InsertAgentInfo(agentInfo AgentInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&agentInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert agent info fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAgentInfoByAgentUid(agentUid string) AgentInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var agentInfo AgentInfo
|
|
||||||
_, err := o.QueryTable(AGENT_INFO).Filter("agent_uid", agentUid).Limit(1).All(&agentInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get agent info by agentUid fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return agentInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAgentInfoByPhone(phone string) AgentInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var agentInfo AgentInfo
|
|
||||||
_, err := o.QueryTable(AGENT_INFO).Filter("agent_phone", phone).Limit(1).All(&agentInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get agent info by phone fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return agentInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAgentInfoLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(AGENT_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, err := qs.Limit(-1).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get agentinfo len by map fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAgentInfoByMap(params map[string]string, displayCount, offset int) []AgentInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var agentInfoList []AgentInfo
|
|
||||||
|
|
||||||
qs := o.QueryTable(AGENT_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&agentInfoList)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get agentInfo by map fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return agentInfoList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAllAgentByMap(parmas map[string]string) []AgentInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var agentList []AgentInfo
|
|
||||||
|
|
||||||
qs := o.QueryTable(AGENT_INFO)
|
|
||||||
for k, v := range parmas {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := qs.Limit(-1).All(&agentList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get all agent by map fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return agentList
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateAgentInfo(agentInfo AgentInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Update(&agentInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update agentinfo fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteAgentByAgentUid(agentUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(AGENT_INFO).Filter("agent_uid", agentUid).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete agent by agent uid fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/12/17 17:50
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : agent_profit
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/12/17 17:50
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
type AgentProfit struct {
|
|
||||||
}
|
|
@ -1,106 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/9/6 10:19
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : bank_card_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/9/6 10:19
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type BankCardInfo struct {
|
|
||||||
Id int
|
|
||||||
Uid string
|
|
||||||
UserName string
|
|
||||||
BankName string
|
|
||||||
BankCode string
|
|
||||||
BankAccountType string
|
|
||||||
AccountName string
|
|
||||||
BankNo string
|
|
||||||
IdentifyCard string
|
|
||||||
CertificateNo string
|
|
||||||
PhoneNo string
|
|
||||||
BankAddress string
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const BANK_CARD_INFO = "bank_card_info"
|
|
||||||
|
|
||||||
func InsertBankCardInfo(bankCardInfo BankCardInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&bankCardInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert bank card info fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetBankCardLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(BANK_CARD_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
cnt, err := qs.Limit(-1).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get bank card len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetBankCardByMap(params map[string]string, displayCount, offset int) []BankCardInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var bankCardList []BankCardInfo
|
|
||||||
qs := o.QueryTable(BANK_CARD_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&bankCardList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get bank card by map fail: ", err)
|
|
||||||
}
|
|
||||||
return bankCardList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetBankCardByUid(uid string) BankCardInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var bankCardInfo BankCardInfo
|
|
||||||
_, err := o.QueryTable(bankCardInfo).Filter("uid", uid).Limit(1).All(&bankCardInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get bank card by uid fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return bankCardInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteBankCardByUid(uid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(BANK_CARD_INFO).Filter("uid", uid).Delete()
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete bank card by uid fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateBankCard(bankCard BankCardInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Update(&bankCard)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update bank card fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,135 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/7 11:52
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : merchant_deploy_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/7 11:52
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type MerchantDeployInfo struct {
|
|
||||||
Id int
|
|
||||||
Status string
|
|
||||||
MerchantUid string
|
|
||||||
PayType string
|
|
||||||
SingleRoadUid string
|
|
||||||
SingleRoadName string
|
|
||||||
SingleRoadPlatformRate float64
|
|
||||||
SingleRoadAgentRate float64
|
|
||||||
RollRoadCode string
|
|
||||||
RollRoadName string
|
|
||||||
RollRoadPlatformRate float64
|
|
||||||
RollRoadAgentRate float64
|
|
||||||
IsLoan string
|
|
||||||
LoanRate float64
|
|
||||||
LoanDays int
|
|
||||||
UnfreezeHour int
|
|
||||||
WaitUnfreezeAmount float64
|
|
||||||
LoanAmount float64
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const MERCHANT_DEPLOY_INFO = "merchant_deploy_info"
|
|
||||||
|
|
||||||
func InsertMerchantDeployInfo(merchantDeployInfo MerchantDeployInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&merchantDeployInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert merchant deploy info fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsExistByUidAndPayType(uid, payType string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
isEixst := o.QueryTable(MERCHANT_DEPLOY_INFO).Filter("merchant_uid", uid).Filter("pay_type", payType).Exist()
|
|
||||||
return isEixst
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetMerchantDeployByUidAndPayType(uid, payType string) MerchantDeployInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var merchantDeployInfo MerchantDeployInfo
|
|
||||||
_, err := o.QueryTable(MERCHANT_DEPLOY_INFO).Filter("merchant_uid", uid).Filter("pay_type", payType).Limit(1).All(&merchantDeployInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get merchant deploy by uid and paytype fail:", err)
|
|
||||||
}
|
|
||||||
return merchantDeployInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetMerchantDeployByUid(uid string) (ms []MerchantDeployInfo) {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(MERCHANT_DEPLOY_INFO).Filter("merchant_uid", uid).All(&ms)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get merchant deploy by uid fail:", err)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetMerchantDeployByHour(hour int) []MerchantDeployInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var merchantDeployList []MerchantDeployInfo
|
|
||||||
_, err := o.QueryTable(MERCHANT_DEPLOY_INFO).Filter("unfreeze_hour", hour).Filter("status", "active").Limit(-1).All(&merchantDeployList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get merchant deploy list fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return merchantDeployList
|
|
||||||
}
|
|
||||||
func DeleteMerchantDeployByUidAndPayType(uid, payType string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(MERCHANT_DEPLOY_INFO).Filter("merchant_uid", uid).Filter("pay_type", payType).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete merchant deploy by uid and payType fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateMerchantDeploy(merchantDeploy MerchantDeployInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Update(&merchantDeploy)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update merchant deploy fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetMerchantDeployLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(MERCHANT_DEPLOY_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, err := qs.Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get merchant deploy len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetMerchantDeployListByMap(params map[string]string, displayCount, offset int) (md []MerchantDeployInfo) {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(MERCHANT_DEPLOY_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&md)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get merchant deploy list by map fail: ", err)
|
|
||||||
}
|
|
||||||
return md
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/11/22 13:07
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : merchant_load_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/11/22 13:07
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type MerchantLoadInfo struct {
|
|
||||||
Id int
|
|
||||||
Status string
|
|
||||||
MerchantUid string
|
|
||||||
RoadUid string
|
|
||||||
LoadDate string
|
|
||||||
LoadAmount float64
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const MERCHANT_LOAD_INFO = "merchant_load_info"
|
|
||||||
|
|
||||||
func GetMerchantLoadInfoByMap(params map[string]string) []MerchantLoadInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(MERCHANT_LOAD_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var merchantLoadList []MerchantLoadInfo
|
|
||||||
_, err := qs.Limit(-11).All(&merchantLoadList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get merchant load info fail: ", err)
|
|
||||||
}
|
|
||||||
return merchantLoadList
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsExistMerchantLoadByParams(params map[string]string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(MERCHANT_LOAD_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return qs.Exist()
|
|
||||||
}
|
|
@ -1,222 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/28 10:15
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : order_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/28 10:15
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
"strconv"
|
|
||||||
)
|
|
||||||
|
|
||||||
type OrderInfo struct {
|
|
||||||
Id int
|
|
||||||
ShopName string //商品名称
|
|
||||||
OrderPeriod string //订单有效时间
|
|
||||||
MerchantOrderId string //商户订单id
|
|
||||||
BankOrderId string //本系统订单id
|
|
||||||
BankTransId string //上游流水id
|
|
||||||
OrderAmount float64 //订单提交的金额
|
|
||||||
ShowAmount float64 //待支付的金额
|
|
||||||
FactAmount float64 //用户实际支付金额
|
|
||||||
RollPoolCode string //轮询池编码
|
|
||||||
RollPoolName string //轮询池名臣
|
|
||||||
RoadUid string //通道标识
|
|
||||||
RoadName string //通道名称
|
|
||||||
PayProductName string //上游支付公司的名称
|
|
||||||
PayProductCode string //上游支付公司的编码代号
|
|
||||||
PayTypeCode string //支付产品编码
|
|
||||||
PayTypeName string //支付产品名称
|
|
||||||
OsType string //操作系统类型
|
|
||||||
Status string //订单支付状态
|
|
||||||
Refund string //退款状态
|
|
||||||
RefundTime string //退款操作时间
|
|
||||||
Freeze string //冻结状态
|
|
||||||
FreezeTime string //冻结时间
|
|
||||||
Unfreeze string //是否已经解冻
|
|
||||||
UnfreezeTime string //解冻时间
|
|
||||||
ReturnUrl string //支付完跳转地址
|
|
||||||
NotifyUrl string //下游回调地址
|
|
||||||
MerchantUid string //商户id
|
|
||||||
MerchantName string //商户名称
|
|
||||||
AgentUid string //该商户所属代理
|
|
||||||
AgentName string //该商户所属代理名称
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const ORDER_INFO = "order_info"
|
|
||||||
|
|
||||||
func InsertOrder(orderInfo OrderInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&orderInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert order info fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func OrderNoIsEixst(orderId string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exits := o.QueryTable(ORDER_INFO).Filter("merchant_order_id", orderId).Exist()
|
|
||||||
return exits
|
|
||||||
}
|
|
||||||
|
|
||||||
func BankOrderIdIsEixst(bankOrderId string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exists := o.QueryTable(ORDER_INFO).Filter("bank_order_id", bankOrderId).Exist()
|
|
||||||
return exists
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetOrderLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ORDER_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, _ := qs.Limit(-1).Count()
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetOrderByMap(params map[string]string, display, offset int) []OrderInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var orderInfoList []OrderInfo
|
|
||||||
qs := o.QueryTable(ORDER_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(display, offset).OrderBy("-update_time").All(&orderInfoList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get order by map fail: ", err)
|
|
||||||
}
|
|
||||||
return orderInfoList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSuccessRateByMap(params map[string]string) string {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ORDER_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
successRate := "0%"
|
|
||||||
allCount, _ := qs.Limit(-1).Count()
|
|
||||||
successCount, _ := qs.Filter("status", "success").Limit(-1).Count()
|
|
||||||
if allCount == 0 {
|
|
||||||
return successRate
|
|
||||||
}
|
|
||||||
tmp := float64(successCount) / float64(allCount) * 100
|
|
||||||
successRate = fmt.Sprintf("%.1f", tmp)
|
|
||||||
return successRate + "%"
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAllAmountByMap(params map[string]string) float64 {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
condition := "select sum(order_amount) as allAmount from order_info "
|
|
||||||
for _, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
condition = condition + "where "
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
flag := false
|
|
||||||
if params["create_time__gte"] != "" {
|
|
||||||
flag = true
|
|
||||||
condition = condition + " create_time >= '" + params["create_time__gte"] + "'"
|
|
||||||
}
|
|
||||||
if params["create_time__lte"] != "" {
|
|
||||||
if flag {
|
|
||||||
condition = condition + " and "
|
|
||||||
}
|
|
||||||
condition = condition + " create_time <= '" + params["create_time__lte"] + "'"
|
|
||||||
}
|
|
||||||
if params["merchant_name__icontains"] != "" {
|
|
||||||
if flag {
|
|
||||||
condition = condition + " and "
|
|
||||||
}
|
|
||||||
condition = condition + "merchant_name like %'" + params["merchant_name__icontains"] + "'% "
|
|
||||||
}
|
|
||||||
if params["merchant_order_id"] != "" {
|
|
||||||
if flag {
|
|
||||||
condition = condition + " and "
|
|
||||||
}
|
|
||||||
condition = condition + " merchant_order_id = '" + params["merchant_order_id"] + "'"
|
|
||||||
}
|
|
||||||
if params["bank_order_id"] != "" {
|
|
||||||
if flag {
|
|
||||||
condition = condition + " and "
|
|
||||||
}
|
|
||||||
condition = condition + " bank_order_id = '" + params["bank_order_id"] + "'"
|
|
||||||
}
|
|
||||||
if params["status"] != "" {
|
|
||||||
if flag {
|
|
||||||
condition = condition + " and "
|
|
||||||
}
|
|
||||||
condition = condition + "status = '" + params["status"] + "'"
|
|
||||||
}
|
|
||||||
if params["pay_product_code"] != "" {
|
|
||||||
if flag {
|
|
||||||
condition = condition + " and "
|
|
||||||
}
|
|
||||||
condition = condition + "pay_product_code = " + params["pay_product_code"] + "'"
|
|
||||||
}
|
|
||||||
if params["pay_type_code"] != "" {
|
|
||||||
if flag {
|
|
||||||
condition = condition + " and "
|
|
||||||
}
|
|
||||||
condition = condition + "pay_type_code = " + params["pay_type_code"]
|
|
||||||
}
|
|
||||||
logs.Info("get order amount str = ", condition)
|
|
||||||
var maps []orm.Params
|
|
||||||
allAmount := 0.00
|
|
||||||
num, err := o.Raw(condition).Values(&maps)
|
|
||||||
if err == nil && num > 0 {
|
|
||||||
allAmount, _ = strconv.ParseFloat(maps[0]["allAmount"].(string), 64)
|
|
||||||
}
|
|
||||||
return allAmount
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetOrderByBankOrderId(bankOrderId string) OrderInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var orderInfo OrderInfo
|
|
||||||
_, err := o.QueryTable(ORDER_INFO).Filter("bank_order_id", bankOrderId).Limit(1).All(&orderInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get order info by bankOrderId fail: ", err)
|
|
||||||
}
|
|
||||||
return orderInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetOrderByMerchantOrderId(merchantOrderId string) OrderInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var orderInfo OrderInfo
|
|
||||||
_, err := o.QueryTable(ORDER_INFO).Filter("merchant_order_id", merchantOrderId).Limit(1).All(&orderInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get order by merchant_order_id: ", err.Error())
|
|
||||||
}
|
|
||||||
return orderInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetOneOrder(bankOrderId string) OrderInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var orderInfo OrderInfo
|
|
||||||
_, err := o.QueryTable(ORDER_INFO).Filter("bank_order_id", bankOrderId).Limit(1).All(&orderInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get one order fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return orderInfo
|
|
||||||
}
|
|
@ -1,51 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/30 11:41
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : order_settle_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/30 11:41
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type OrderSettleInfo struct {
|
|
||||||
Id int
|
|
||||||
PayProductCode string
|
|
||||||
PayProductName string
|
|
||||||
PayTypeCode string
|
|
||||||
RoadUid string
|
|
||||||
PayTypeName string
|
|
||||||
MerchantUid string
|
|
||||||
MerchantName string
|
|
||||||
MerchantOrderId string
|
|
||||||
BankOrderId string
|
|
||||||
SettleAmount float64
|
|
||||||
IsAllowSettle string
|
|
||||||
IsCompleteSettle string
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const ORDER_SETTLE_INFO = "order_settle_info"
|
|
||||||
|
|
||||||
func GetOrderSettleListByParams(params map[string]string) []OrderSettleInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ORDER_SETTLE_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var orderSettleList []OrderSettleInfo
|
|
||||||
if _, err := qs.Limit(-1).All(&orderSettleList); err != nil {
|
|
||||||
logs.Error("get order settle list fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return orderSettleList
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/12/17 17:50
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : platform_profit
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/12/17 17:50
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
type PlatformProfit struct {
|
|
||||||
MerchantName string
|
|
||||||
AgentName string
|
|
||||||
SupplierName string
|
|
||||||
PayTypeName string
|
|
||||||
OrderAmount float64
|
|
||||||
OrderCount int
|
|
||||||
PlatformProfit float64
|
|
||||||
AgentProfit float64
|
|
||||||
}
|
|
@ -1,143 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/8/28 17:59
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : power_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/8/28 17:59
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type PowerInfo struct {
|
|
||||||
Id int
|
|
||||||
FirstMenuUid string
|
|
||||||
SecondMenuUid string
|
|
||||||
SecondMenu string
|
|
||||||
PowerId string
|
|
||||||
PowerItem string
|
|
||||||
Creater string
|
|
||||||
Status string
|
|
||||||
CreateTime string
|
|
||||||
UpdateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const POWER_INFO = "power_info"
|
|
||||||
|
|
||||||
type PowerInfoSlice []PowerInfo
|
|
||||||
|
|
||||||
func (sm PowerInfoSlice) Len() int {
|
|
||||||
return len(sm)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (sm PowerInfoSlice) Swap(i, j int) {
|
|
||||||
sm[i], sm[j] = sm[j], sm[i]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (sm PowerInfoSlice) Less(i, j int) bool {
|
|
||||||
return sm[i].SecondMenuUid < sm[j].SecondMenuUid
|
|
||||||
}
|
|
||||||
|
|
||||||
func PowerUidExists(powerUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exists := o.QueryTable(POWER_INFO).Filter("power_id", powerUid).Exist()
|
|
||||||
return exists
|
|
||||||
}
|
|
||||||
|
|
||||||
func InsertPowerInfo(powerInfo PowerInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&powerInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert power info fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPower() []PowerInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var powerInfo []PowerInfo
|
|
||||||
_, err := o.QueryTable(POWER_INFO).Limit(-1).All(&powerInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get power fail: ", err)
|
|
||||||
}
|
|
||||||
return powerInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPowerById(powerId string) PowerInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var powerInfo PowerInfo
|
|
||||||
_, err := o.QueryTable(POWER_INFO).Filter("power_id", powerId).Limit(1).All(&powerInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get power by id fail: ", err)
|
|
||||||
}
|
|
||||||
return powerInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPowerByIds(powerIds []string) []PowerInfo {
|
|
||||||
var powerInfoList []PowerInfo
|
|
||||||
for _, v := range powerIds {
|
|
||||||
m := GetPowerById(v)
|
|
||||||
powerInfoList = append(powerInfoList, m)
|
|
||||||
}
|
|
||||||
return powerInfoList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPowerItemLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(POWER_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, err := qs.Limit(-1).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get power item len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPowerItemByMap(params map[string]string, displpay, offset int) []PowerInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var powerItemList []PowerInfo
|
|
||||||
qs := o.QueryTable(POWER_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := qs.Limit(displpay, offset).OrderBy("-update_time").All(&powerItemList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get power item by map fail: ", err)
|
|
||||||
}
|
|
||||||
return powerItemList
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeletePowerItemByPowerID(powerID string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(POWER_INFO).Filter("power_id", powerID).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete power item by powerID fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeletePowerBySecondUid(secondUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(POWER_INFO).Filter("second_menu_uid", secondUid).Delete()
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete power by second menu uid fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,162 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/9/8 12:09
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : road_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/9/8 12:09
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type RoadInfo struct {
|
|
||||||
Id int
|
|
||||||
Status string
|
|
||||||
RoadName string
|
|
||||||
RoadUid string
|
|
||||||
Remark string
|
|
||||||
ProductName string
|
|
||||||
ProductUid string
|
|
||||||
PayType string
|
|
||||||
BasicFee float64
|
|
||||||
SettleFee float64
|
|
||||||
TotalLimit float64
|
|
||||||
TodayLimit float64
|
|
||||||
SingleMinLimit float64
|
|
||||||
SingleMaxLimit float64
|
|
||||||
StarHour int
|
|
||||||
EndHour int
|
|
||||||
Params string
|
|
||||||
TodayIncome float64
|
|
||||||
TotalIncome float64
|
|
||||||
TodayProfit float64
|
|
||||||
TotalProfit float64
|
|
||||||
Balance float64
|
|
||||||
RequestAll int
|
|
||||||
RequestSuccess int
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const ROAD_INFO = "road_info"
|
|
||||||
|
|
||||||
func GetRoadInfoByRoadUid(roadUid string) RoadInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadInfo RoadInfo
|
|
||||||
_, err := o.QueryTable(ROAD_INFO).Exclude("status", "delete").Filter("road_uid", roadUid).Limit(1).All(&roadInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get road info by road uid fail: ", err)
|
|
||||||
}
|
|
||||||
return roadInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoadInfosByRoadUids(roadUids []string) []RoadInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadInfoList []RoadInfo
|
|
||||||
_, err := o.QueryTable(ROAD_INFO).Filter("road_uid__in", roadUids).OrderBy("update_time").All(&roadInfoList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get roadInfos by roadUids fail: ", err)
|
|
||||||
}
|
|
||||||
return roadInfoList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoadInfoByName(roadName string) RoadInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadInfo RoadInfo
|
|
||||||
_, err := o.QueryTable(ROAD_INFO).Exclude("status", "delete").Filter("road_name", roadName).Limit(1).All(&roadInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get road info by name fail: ", err)
|
|
||||||
}
|
|
||||||
return roadInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoadLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ROAD_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, err := qs.Exclude("status", "delete").Limit(-1).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get road len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoadInfoByMap(params map[string]string, displayCount, offset int) []RoadInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadInfoList []RoadInfo
|
|
||||||
qs := o.QueryTable(ROAD_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := qs.Exclude("status", "delete").Limit(displayCount, offset).OrderBy("-update_time").All(&roadInfoList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get road info by map fail: ", err)
|
|
||||||
}
|
|
||||||
return roadInfoList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAllRoad(params map[string]string) []RoadInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadInfoList []RoadInfo
|
|
||||||
qs := o.QueryTable(ROAD_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(-1).All(&roadInfoList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get all road fail: ", err)
|
|
||||||
}
|
|
||||||
return roadInfoList
|
|
||||||
}
|
|
||||||
|
|
||||||
func InsertRoadInfo(roadInfo RoadInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&roadInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert road info fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func RoadInfoExistByRoadUid(roadUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(ROAD_INFO).Filter("status", "active").Filter("road_uid", roadUid).Exist()
|
|
||||||
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateRoadInfo(roadInfo RoadInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Update(&roadInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update road info fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteRoadByRoadUid(roadUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(ROAD_INFO).Filter("road_uid", roadUid).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete road by road uid fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,127 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/9/9 16:35
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : road_pool_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/9/9 16:35
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type RoadPoolInfo struct {
|
|
||||||
Id int
|
|
||||||
Status string
|
|
||||||
RoadPoolName string
|
|
||||||
RoadPoolCode string
|
|
||||||
RoadUidPool string
|
|
||||||
UpdateTime string
|
|
||||||
CreateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const ROAD_POOL_INFO = "road_pool_info"
|
|
||||||
|
|
||||||
func InsertRoadPool(roadPool RoadPoolInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&roadPool)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert road pool fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoadPoolLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ROAD_POOL_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, err := qs.Limit(-1).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get road pool len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoadPoolByMap(params map[string]string, displayCount, offset int) []RoadPoolInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadPoolList []RoadPoolInfo
|
|
||||||
qs := o.QueryTable(ROAD_POOL_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&roadPoolList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get road pool by map fail: ", err)
|
|
||||||
}
|
|
||||||
return roadPoolList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoadPoolByRoadPoolCode(roadPoolCode string) RoadPoolInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadPoolInfo RoadPoolInfo
|
|
||||||
_, err := o.QueryTable(ROAD_POOL_INFO).Filter("road_pool_code", roadPoolCode).Limit(1).All(&roadPoolInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get road pool info by road pool code fail: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return roadPoolInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAllRollPool(params map[string]string) []RoadPoolInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadPoolList []RoadPoolInfo
|
|
||||||
qs := o.QueryTable(ROAD_POOL_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(-1).All(&roadPoolList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get all roll pool fail: ", err)
|
|
||||||
}
|
|
||||||
return roadPoolList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoadPoolByName(roadPoolName string) RoadPoolInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roadPoolInfo RoadPoolInfo
|
|
||||||
_, err := o.QueryTable(ROAD_POOL_INFO).Filter("road_pool_name", roadPoolName).Limit(1).All(&roadPoolInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get road pool by name fail: ", err)
|
|
||||||
}
|
|
||||||
return roadPoolInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteRoadPoolByCode(roadPoolCode string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(ROAD_POOL_INFO).Filter("road_pool_code", roadPoolCode).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete road pool by code fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateRoadPool(roadPool RoadPoolInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Update(&roadPool)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update road pool fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,123 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/8/29 14:43
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : role_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/8/29 14:43
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type RoleInfo struct {
|
|
||||||
Id int
|
|
||||||
RoleName string
|
|
||||||
RoleUid string
|
|
||||||
ShowFirstMenu string
|
|
||||||
ShowFirstUid string
|
|
||||||
ShowSecondMenu string
|
|
||||||
ShowSecondUid string
|
|
||||||
ShowPower string
|
|
||||||
ShowPowerUid string
|
|
||||||
Creater string
|
|
||||||
Status string
|
|
||||||
Remark string
|
|
||||||
CreateTime string
|
|
||||||
UpdateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
const ROLE_INFO = "role_info"
|
|
||||||
|
|
||||||
func GetRoleLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(ROLE_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cnt, err := qs.Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get role len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRole() []RoleInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roleInfo []RoleInfo
|
|
||||||
_, err := o.QueryTable(ROLE_INFO).Limit(-1).OrderBy("-update_time").All(&roleInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get all role fail: ", err)
|
|
||||||
}
|
|
||||||
return roleInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoleByMap(params map[string]string, display, offset int) []RoleInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roleInfo []RoleInfo
|
|
||||||
qs := o.QueryTable(ROLE_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(display, offset).OrderBy("-update_time").All(&roleInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get role by map fail: ", err)
|
|
||||||
}
|
|
||||||
return roleInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetRoleByRoleUid(roleUid string) RoleInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var roleInfo RoleInfo
|
|
||||||
_, err := o.QueryTable(ROLE_INFO).Filter("role_uid", roleUid).Limit(1).All(&roleInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get role by role uid fail: ", err)
|
|
||||||
}
|
|
||||||
return roleInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func RoleNameExists(roleName string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exists := o.QueryTable(ROLE_INFO).Filter("role_name", roleName).Exist()
|
|
||||||
return exists
|
|
||||||
}
|
|
||||||
|
|
||||||
func InsertRole(roleInfo RoleInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&roleInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert role fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteRoleByRoleUid(roleUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(ROLE_INFO).Filter("role_uid", roleUid).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete role by role uid fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateRoleInfo(roleInfo RoleInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Update(&roleInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update role info fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,216 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/8/26 9:33
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : second_menu_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/8/26 9:33
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
const SECOND_MENU_INFO = "second_menu_info"
|
|
||||||
|
|
||||||
type SecondMenuInfo struct {
|
|
||||||
Id int
|
|
||||||
FirstMenuOrder int
|
|
||||||
FirstMenuUid string
|
|
||||||
FirstMenu string
|
|
||||||
MenuOrder int
|
|
||||||
SecondMenuUid string
|
|
||||||
SecondMenu string
|
|
||||||
SecondRouter string
|
|
||||||
Creater string
|
|
||||||
Status string
|
|
||||||
CreateTime string
|
|
||||||
UpdateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
type SecondMenuSlice []SecondMenuInfo
|
|
||||||
|
|
||||||
func (sm SecondMenuSlice) Len() int {
|
|
||||||
return len(sm)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (sm SecondMenuSlice) Swap(i, j int) {
|
|
||||||
sm[i], sm[j] = sm[j], sm[i]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (sm SecondMenuSlice) Less(i, j int) bool {
|
|
||||||
if sm[i].FirstMenuOrder == sm[j].FirstMenuOrder {
|
|
||||||
return sm[i].MenuOrder < sm[j].MenuOrder
|
|
||||||
}
|
|
||||||
return sm[i].FirstMenuOrder < sm[j].FirstMenuOrder
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuLen() int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
cnt, err := o.QueryTable(SECOND_MENU_INFO).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get second meun len fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuInfoByMenuOrder(menuOrder int, firstMenuUid string) SecondMenuInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var secondMenuInfo SecondMenuInfo
|
|
||||||
_, err := o.QueryTable(SECOND_MENU_INFO).Filter("first_menu_uid", firstMenuUid).Filter("menu_order", menuOrder).Limit(1).All(&secondMenuInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get second menu info by menu order fail: ", err)
|
|
||||||
}
|
|
||||||
return secondMenuInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuLenByFirstMenuUid(firstMenuUid string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
cnt, err := o.QueryTable(SECOND_MENU_INFO).Filter("first_menu_uid", firstMenuUid).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get second menu len by first menu uid fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuList() []SecondMenuInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var secondMenuList []SecondMenuInfo
|
|
||||||
_, err := o.QueryTable(SECOND_MENU_INFO).Limit(-1).OrderBy("-update_time").All(&secondMenuList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get second menu list fail: ", err)
|
|
||||||
}
|
|
||||||
return secondMenuList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuInfoBySecondMenuUid(secondMenuUid string) SecondMenuInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var secondMenuInfo SecondMenuInfo
|
|
||||||
_, err := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu_uid", secondMenuUid).Limit(1).All(&secondMenuInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get scond menu info by second menu uid fail: ", err)
|
|
||||||
}
|
|
||||||
return secondMenuInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuInfoBySecondMenuUids(secondMenuUids []string) []SecondMenuInfo {
|
|
||||||
secondMenuInfoList := make([]SecondMenuInfo, 0)
|
|
||||||
for _, v := range secondMenuUids {
|
|
||||||
sm := GetSecondMenuInfoBySecondMenuUid(v)
|
|
||||||
secondMenuInfoList = append(secondMenuInfoList, sm)
|
|
||||||
}
|
|
||||||
return secondMenuInfoList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuListByFirstMenuUid(firstMenuUid string) []SecondMenuInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var secondMenuList []SecondMenuInfo
|
|
||||||
_, err := o.QueryTable(SECOND_MENU_INFO).Filter("first_menu_uid", firstMenuUid).Limit(-1).OrderBy("-update_time").All(&secondMenuList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get second menu list by first menu uid fail: ", err)
|
|
||||||
}
|
|
||||||
return secondMenuList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(SECOND_MENU_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
cnt, err := qs.Limit(-1).Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get second menu len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSecondMenuByMap(params map[string]string, displayCount, offset int) []SecondMenuInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var secondMenuList []SecondMenuInfo
|
|
||||||
qs := o.QueryTable(SECOND_MENU_INFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&secondMenuList)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get second menu by map fail: ", err)
|
|
||||||
}
|
|
||||||
return secondMenuList
|
|
||||||
}
|
|
||||||
func InsertSecondMenu(secondMenuInfo SecondMenuInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&secondMenuInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert second menu fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func SecondMenuIsExists(seconfMenu string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu", seconfMenu).Exist()
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func SecondMenuUidIsExists(secondMenuUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu_uid", secondMenuUid).Exist()
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func SecondRouterExists(secondRouter string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(SECOND_MENU_INFO).Filter("second_router", secondRouter).Exist()
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteSecondMenuByFirstMenuUid(firstMenuUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
num, err := o.QueryTable(SECOND_MENU_INFO).Filter("first_menu_uid", firstMenuUid).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete second menu by first menu uid fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
logs.Info("delete second menu by first menu uid success, num: ", num)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteSecondMenuBySecondMenuUid(secondMenuUid string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
num, err := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu_uid", secondMenuUid).Delete()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete second menu by second menu uid fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
logs.Info("delete second menu by second menu uid success, num: ", num)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateSecondMenuOrderBySecondUid(secondUid string, order int) {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu_uid", secondUid).Update(orm.Params{"menu_order": order})
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update second menu order by second menu uid fail: ", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateSecondMenu(secondMenu SecondMenuInfo) {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Update(&secondMenu)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update second menu for first order fail: ", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func SecondMenuExistByMenuOrder(menuOrder int) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(SECOND_MENU_INFO).Filter("menu_order", menuOrder).Exist()
|
|
||||||
return exist
|
|
||||||
}
|
|
@ -1,87 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/19 14:17
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : transaction
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/19 14:17
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
)
|
|
||||||
|
|
||||||
/*func OperatorAccount(accountUid, operatorType string, amount float64) (string, bool) {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
o.Begin()
|
|
||||||
|
|
||||||
defer func(interface{}) {
|
|
||||||
if r := recover(); r != nil {
|
|
||||||
o.Rollback()
|
|
||||||
logs.Error("operator account fail")
|
|
||||||
}
|
|
||||||
}(o)
|
|
||||||
|
|
||||||
msg := ""
|
|
||||||
//处理事务
|
|
||||||
accountInfo := new(AccountInfo)
|
|
||||||
if err := o.Raw("select * from account_info where account_uid = ? for update", accountUid).QueryRow(accountInfo); err != nil || accountInfo.AccountUid == "" {
|
|
||||||
logs.Error("operator account get account info for update fail: ", err)
|
|
||||||
o.Rollback()
|
|
||||||
return msg, false
|
|
||||||
}
|
|
||||||
|
|
||||||
accountInfo.UpdateTime = utils.GetBasicDateTime()
|
|
||||||
flag := true
|
|
||||||
|
|
||||||
switch operatorType {
|
|
||||||
case common.PLUS_AMOUNT: //处理加款操作
|
|
||||||
accountInfo.Balance = accountInfo.Balance + amount
|
|
||||||
accountInfo.SettleAmount = accountInfo.SettleAmount + amount
|
|
||||||
case common.SUB_AMOUNT: //处理减款
|
|
||||||
if accountInfo.Balance >= amount && accountInfo.SettleAmount >= amount {
|
|
||||||
accountInfo.Balance = accountInfo.Balance - amount
|
|
||||||
accountInfo.SettleAmount = accountInfo.SettleAmount - amount
|
|
||||||
} else {
|
|
||||||
msg = "账户余额不够减"
|
|
||||||
flag = false
|
|
||||||
}
|
|
||||||
case common.FREEZE_AMOUNT: //处理冻结款
|
|
||||||
accountInfo.FreezeAmount = accountInfo.FreezeAmount + amount
|
|
||||||
case common.UNFREEZE_AMOUNT: //处理解冻款
|
|
||||||
if accountInfo.FreezeAmount >= amount {
|
|
||||||
accountInfo.FreezeAmount = accountInfo.FreezeAmount - amount
|
|
||||||
} else {
|
|
||||||
msg = "账户冻结金额不够解冻款"
|
|
||||||
flag = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !flag {
|
|
||||||
o.Rollback()
|
|
||||||
return msg, false
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := o.Update(accountInfo); err != nil {
|
|
||||||
logs.Error("operator account update account fail: ", err)
|
|
||||||
o.Rollback()
|
|
||||||
return msg, false
|
|
||||||
}
|
|
||||||
//往account_history表中插入一条动账记录
|
|
||||||
accountHistory := AccountHistoryInfo{AccountUid: accountUid, AccountName: accountInfo.AccountName, Type: operatorType,
|
|
||||||
Amount: amount, Balance: accountInfo.Balance, CreateTime: utils.GetBasicDateTime(), UpdateTime: utils.GetBasicDateTime()}
|
|
||||||
|
|
||||||
if _, err := o.Insert(&accountHistory); err != nil {
|
|
||||||
logs.Error("operator account insert account history fail: ", err)
|
|
||||||
o.Rollback()
|
|
||||||
return msg, false
|
|
||||||
}
|
|
||||||
if err := o.Commit(); err != nil {
|
|
||||||
logs.Error("operator account commit fail: ", err)
|
|
||||||
return msg, false
|
|
||||||
} else {
|
|
||||||
logs.Info("操作账户成功")
|
|
||||||
return "", true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
@ -1,146 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/8/9 14:02
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : user_info
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/8/9 14:02
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
USERINFO = "user_info"
|
|
||||||
)
|
|
||||||
|
|
||||||
type UserInfo struct {
|
|
||||||
Id int
|
|
||||||
UserId string
|
|
||||||
Passwd string
|
|
||||||
Nick string
|
|
||||||
Remark string
|
|
||||||
Ip string
|
|
||||||
Status string
|
|
||||||
Role string
|
|
||||||
RoleName string
|
|
||||||
CreateTime string
|
|
||||||
UpdateTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetUserInfoByUserID(userID string) UserInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var userInfo UserInfo
|
|
||||||
err := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userID).One(&userInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get user info fail: ", err)
|
|
||||||
}
|
|
||||||
return userInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetOperatorByMap(params map[string]string, displayCount, offset int) []UserInfo {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
var userInfo []UserInfo
|
|
||||||
qs := o.QueryTable(USERINFO)
|
|
||||||
for k, v := range params {
|
|
||||||
if len(v) > 0 {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := qs.Exclude("status", "delete").Limit(displayCount, offset).OrderBy("-update_time").All(&userInfo)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get operator by map fail: ", err)
|
|
||||||
}
|
|
||||||
return userInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetOperatorLenByMap(params map[string]string) int {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
qs := o.QueryTable(USERINFO)
|
|
||||||
for k, v := range params {
|
|
||||||
qs = qs.Filter(k, v)
|
|
||||||
}
|
|
||||||
cnt, err := qs.Exclude("status", "delete").Count()
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("get operator len by map fail: ", err)
|
|
||||||
}
|
|
||||||
return int(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateUserInfoIP(userInfo UserInfo) {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
num, err := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userInfo.UserId).Update(orm.Params{"ip": userInfo.Ip})
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("%s update user info ip fail: %v", userInfo.UserId, err)
|
|
||||||
} else {
|
|
||||||
logs.Info("%s update user info ip success, num: %d", userInfo.UserId, num)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateUserInfoPassword(userInfo UserInfo) {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
num, err := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userInfo.UserId).Update(orm.Params{"passwd": userInfo.Passwd})
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("%s update user info password fail: %v", userInfo.UserId, err)
|
|
||||||
} else {
|
|
||||||
logs.Info("%s update user info password success, update num: %d", userInfo.UserId, num)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateUserInfo(userInfo UserInfo) {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
if num, err := o.Update(&userInfo); err != nil {
|
|
||||||
logs.Error("update user info fail: ", err)
|
|
||||||
} else {
|
|
||||||
logs.Info("update user info success, num: ", num)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateStauts(status, userId string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(USERINFO).Filter("user_id", userId).Update(orm.Params{"status": status})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("update status fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func UserInfoExistByUserId(userId string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userId).Exist()
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func NickIsExist(nick string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
exist := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("nick", nick).Exist()
|
|
||||||
return exist
|
|
||||||
}
|
|
||||||
|
|
||||||
func InsertUser(userInfo UserInfo) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.Insert(&userInfo)
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("insert user fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func DeleteUserByUserId(userId string) bool {
|
|
||||||
o := orm.NewOrm()
|
|
||||||
_, err := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userId).Update(orm.Params{"status": "delete"})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logs.Error("delete user by userId fail: ", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
@ -1,70 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/28 16:38
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : alipay
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/28 16:38
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package controller
|
|
||||||
|
|
||||||
import (
|
|
||||||
"gateway/models"
|
|
||||||
)
|
|
||||||
|
|
||||||
type AlipayImpl struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) Scan(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return scanData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) H5(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return scanData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) Syt(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return scanData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) Fast(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) bool {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) Web(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) bool {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) PayNotify() {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) PayQuery(orderInfo models.OrderInfo) bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) PayFor(info models.PayforInfo) string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) PayForNotify() string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) PayForQuery(payFor models.PayforInfo) (string, string) {
|
|
||||||
return "", ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AlipayImpl) BalanceQuery(roadInfo models.RoadInfo) float64 {
|
|
||||||
return 0.00
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/11/19 18:12
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : consts.go
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/11/19 18:12
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package controller
|
|
||||||
|
|
||||||
const (
|
|
||||||
PayNotify = ""
|
|
||||||
)
|
|
@ -1,31 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : 注册上游支付接口
|
|
||||||
** @Time : 2019/10/28 14:48
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : init
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/28 14:48
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package controller
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/core/logs"
|
|
||||||
)
|
|
||||||
|
|
||||||
var registerSupplier = make(map[string]PayInterface)
|
|
||||||
|
|
||||||
//注册各种上游的支付接口
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
registerSupplier["KF"] = new(KuaiFuImpl)
|
|
||||||
logs.Notice(CheckSupplierByCode("KF"))
|
|
||||||
registerSupplier["WEIXIN"] = new(WeiXinImpl)
|
|
||||||
logs.Notice(CheckSupplierByCode("WEIXIN"))
|
|
||||||
registerSupplier["ALIPAY"] = new(AlipayImpl)
|
|
||||||
logs.Notice(CheckSupplierByCode("ALIPAY"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPaySupplierByCode(code string) PayInterface {
|
|
||||||
return registerSupplier[code]
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : 上有支付公司的编号
|
|
||||||
** @Time : 2019/10/28 10:47
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : supplier
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/28 10:47
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package controller
|
|
||||||
|
|
||||||
//添加新的上游通道时,需要添加这里
|
|
||||||
var supplierCode2Name = map[string]string{
|
|
||||||
"KF": "快付支付",
|
|
||||||
"WEIXIN": "官方微信",
|
|
||||||
"ALIPAY": "官方支付宝",
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSupplierMap() map[string]string {
|
|
||||||
return supplierCode2Name
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSupplierCodes() []string {
|
|
||||||
var supplierCodes []string
|
|
||||||
for k := range supplierCode2Name {
|
|
||||||
supplierCodes = append(supplierCodes, k)
|
|
||||||
}
|
|
||||||
|
|
||||||
return supplierCodes
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSupplierNames() []string {
|
|
||||||
var supplierNames []string
|
|
||||||
for _, v := range supplierCode2Name {
|
|
||||||
supplierNames = append(supplierNames, v)
|
|
||||||
}
|
|
||||||
return supplierNames
|
|
||||||
}
|
|
||||||
|
|
||||||
func CheckSupplierByCode(code string) string {
|
|
||||||
for k, v := range supplierCode2Name {
|
|
||||||
if k == code {
|
|
||||||
return v + ",注册完毕"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "未找到上游名称,注册有问题。"
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for ...
|
|
||||||
** @Time : 2019/10/28 16:38
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : weixin
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/10/28 16:38
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package controller
|
|
||||||
|
|
||||||
import (
|
|
||||||
"gateway/models"
|
|
||||||
)
|
|
||||||
|
|
||||||
type WeiXinImpl struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) Scan(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return scanData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) H5(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return scanData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) Syt(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return scanData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) Fast(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) bool {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) Web(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) bool {
|
|
||||||
var scanData ScanData
|
|
||||||
scanData.Status = "01"
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) PayNotify() {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) PayQuery(orderInfo models.OrderInfo) bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) PayFor(payFor models.PayforInfo) string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) PayForNotify() string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) PayForQuery(payFor models.PayforInfo) (string, string) {
|
|
||||||
return "", ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *WeiXinImpl) BalanceQuery(roadInfo models.RoadInfo) float64 {
|
|
||||||
return 0.00
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
|
||||||
"runtime"
|
|
||||||
"path/filepath"
|
|
||||||
_ "gateway/routers"
|
|
||||||
|
|
||||||
beego "github.com/beego/beego/v2/server/web"
|
|
||||||
. "github.com/smartystreets/goconvey/convey"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
_, file, _, _ := runtime.Caller(0)
|
|
||||||
apppath, _ := filepath.Abs(filepath.Dir(filepath.Join(file, ".." + string(filepath.Separator))))
|
|
||||||
beego.TestBeegoInit(apppath)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// TestBeego is a sample to run an endpoint test
|
|
||||||
func TestBeego(t *testing.T) {
|
|
||||||
r, _ := http.NewRequest("GET", "/", nil)
|
|
||||||
w := httptest.NewRecorder()
|
|
||||||
beego.BeeApp.Handlers.ServeHTTP(w, r)
|
|
||||||
|
|
||||||
beego.Trace("testing", "TestBeego", "Code[%d]\n%s", w.Code, w.Body.String())
|
|
||||||
|
|
||||||
Convey("Subject: Test Station Endpoint\n", t, func() {
|
|
||||||
Convey("Status Code Should Be 200", func() {
|
|
||||||
So(w.Code, ShouldEqual, 200)
|
|
||||||
})
|
|
||||||
Convey("The Result Should Not Be Empty", func() {
|
|
||||||
So(w.Body.Len(), ShouldBeGreaterThan, 0)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -1,440 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : generate login verify code image
|
|
||||||
** @Time : 2019/8/7 17:14
|
|
||||||
** @Author : yuebin
|
|
||||||
** @File : login_verify_code
|
|
||||||
** @Last Modified by : yuebin
|
|
||||||
** @Last Modified time: 2019/8/7 17:14
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package utils
|
|
||||||
|
|
||||||
import (
|
|
||||||
crand "crypto/rand"
|
|
||||||
"image"
|
|
||||||
"image/color"
|
|
||||||
"math/rand"
|
|
||||||
"time"
|
|
||||||
"io"
|
|
||||||
"image/png"
|
|
||||||
"net/http"
|
|
||||||
"strconv"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
stdWidth = 100
|
|
||||||
stdHeight = 40
|
|
||||||
maxSkew = 2
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
fontWidth = 5
|
|
||||||
fontHeight = 8
|
|
||||||
blackChar = 1
|
|
||||||
)
|
|
||||||
|
|
||||||
var font = [][]byte{
|
|
||||||
{ // 0
|
|
||||||
0, 1, 1, 1, 0,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
0, 1, 1, 1, 0},
|
|
||||||
{ // 1
|
|
||||||
0, 0, 1, 0, 0,
|
|
||||||
0, 1, 1, 0, 0,
|
|
||||||
1, 0, 1, 0, 0,
|
|
||||||
0, 0, 1, 0, 0,
|
|
||||||
0, 0, 1, 0, 0,
|
|
||||||
0, 0, 1, 0, 0,
|
|
||||||
0, 0, 1, 0, 0,
|
|
||||||
1, 1, 1, 1, 1},
|
|
||||||
{ // 2
|
|
||||||
0, 1, 1, 1, 0,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 1, 1,
|
|
||||||
0, 1, 1, 0, 0,
|
|
||||||
1, 0, 0, 0, 0,
|
|
||||||
1, 0, 0, 0, 0,
|
|
||||||
1, 1, 1, 1, 1},
|
|
||||||
{ // 3
|
|
||||||
1, 1, 1, 1, 0,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 1, 0,
|
|
||||||
0, 1, 1, 1, 0,
|
|
||||||
0, 0, 0, 1, 0,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
1, 1, 1, 1, 0},
|
|
||||||
{ // 4
|
|
||||||
1, 0, 0, 1, 0,
|
|
||||||
1, 0, 0, 1, 0,
|
|
||||||
1, 0, 0, 1, 0,
|
|
||||||
1, 0, 0, 1, 0,
|
|
||||||
1, 1, 1, 1, 1,
|
|
||||||
0, 0, 0, 1, 0,
|
|
||||||
0, 0, 0, 1, 0,
|
|
||||||
0, 0, 0, 1, 0},
|
|
||||||
{ // 5
|
|
||||||
1, 1, 1, 1, 1,
|
|
||||||
1, 0, 0, 0, 0,
|
|
||||||
1, 0, 0, 0, 0,
|
|
||||||
1, 1, 1, 1, 0,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
1, 1, 1, 1, 0},
|
|
||||||
{ // 6
|
|
||||||
0, 0, 1, 1, 1,
|
|
||||||
0, 1, 0, 0, 0,
|
|
||||||
1, 0, 0, 0, 0,
|
|
||||||
1, 1, 1, 1, 0,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
0, 1, 1, 1, 0},
|
|
||||||
{ // 7
|
|
||||||
1, 1, 1, 1, 1,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 1, 0,
|
|
||||||
0, 0, 1, 0, 0,
|
|
||||||
0, 1, 0, 0, 0,
|
|
||||||
0, 1, 0, 0, 0,
|
|
||||||
0, 1, 0, 0, 0},
|
|
||||||
{ // 8
|
|
||||||
0, 1, 1, 1, 0,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
0, 1, 1, 1, 0,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
0, 1, 1, 1, 0},
|
|
||||||
{ // 9
|
|
||||||
0, 1, 1, 1, 0,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 0, 0, 0, 1,
|
|
||||||
1, 1, 0, 0, 1,
|
|
||||||
0, 1, 1, 1, 1,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
0, 0, 0, 0, 1,
|
|
||||||
1, 1, 1, 1, 0},
|
|
||||||
}
|
|
||||||
|
|
||||||
type Image struct {
|
|
||||||
*image.NRGBA
|
|
||||||
color *color.NRGBA
|
|
||||||
width int //a digit width
|
|
||||||
height int //a digit height
|
|
||||||
dotsize int
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
rand.Seed(int64(time.Second))
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewImage(digits []byte, width, height int) *Image {
|
|
||||||
img := new(Image)
|
|
||||||
r := image.Rect(img.width, img.height, stdWidth, stdHeight)
|
|
||||||
img.NRGBA = image.NewNRGBA(r)
|
|
||||||
img.color = &color.NRGBA{
|
|
||||||
uint8(rand.Intn(129)),
|
|
||||||
uint8(rand.Intn(129)),
|
|
||||||
uint8(rand.Intn(129)),
|
|
||||||
0xFF}
|
|
||||||
// Draw background (10 random circles of random brightness)
|
|
||||||
img.calculateSizes(width, height, len(digits))
|
|
||||||
img.fillWithCircles(0, img.dotsize)
|
|
||||||
maxx := width - (img.width+img.dotsize)*len(digits) - img.dotsize
|
|
||||||
maxy := height - img.height - img.dotsize*2
|
|
||||||
x := rnd(img.dotsize*2, maxx)
|
|
||||||
y := rnd(img.dotsize*2, maxy)
|
|
||||||
// Draw digits.
|
|
||||||
for _, n := range digits {
|
|
||||||
img.drawDigit(font[n], x, y)
|
|
||||||
x += img.width + img.dotsize
|
|
||||||
}
|
|
||||||
// Draw strike-through line.
|
|
||||||
//img.strikeThrough()
|
|
||||||
return img
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (img *Image) WriteTo(w io.Writer) (int64, error) {
|
|
||||||
return 0, png.Encode(w, img)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (img *Image) calculateSizes(width, height, ncount int) {
|
|
||||||
// Goal: fit all digits inside the image.
|
|
||||||
var border int
|
|
||||||
if width > height {
|
|
||||||
border = height / 5
|
|
||||||
} else {
|
|
||||||
border = width / 5
|
|
||||||
}
|
|
||||||
// Convert everything to floats for calculations.
|
|
||||||
w := float64(width - border*2) //268
|
|
||||||
h := float64(height - border*2) //48
|
|
||||||
// fw takes into account 1-dot spacing between digits.
|
|
||||||
fw := float64(fontWidth) + 1 //6
|
|
||||||
fh := float64(fontHeight) //8
|
|
||||||
nc := float64(ncount) //7
|
|
||||||
// Calculate the width of a single digit taking into account only the
|
|
||||||
// width of the image.
|
|
||||||
nw := w / nc //38
|
|
||||||
// Calculate the height of a digit from this width.
|
|
||||||
nh := nw * fh / fw //51
|
|
||||||
// Digit too high?
|
|
||||||
if nh > h {
|
|
||||||
// Fit digits based on height.
|
|
||||||
nh = h //nh = 44
|
|
||||||
nw = fw / fh * nh
|
|
||||||
}
|
|
||||||
// Calculate dot size.
|
|
||||||
img.dotsize = int(nh / fh)
|
|
||||||
// Save everything, making the actual width smaller by 1 dot to account
|
|
||||||
// for spacing between digits.
|
|
||||||
img.width = int(nw)
|
|
||||||
img.height = int(nh) - img.dotsize
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (img *Image) fillWithCircles(n, maxradius int) {
|
|
||||||
color := img.color
|
|
||||||
maxx := img.Bounds().Max.X
|
|
||||||
maxy := img.Bounds().Max.Y
|
|
||||||
for i := 0; i < n; i++ {
|
|
||||||
setRandomBrightness(color, 255)
|
|
||||||
r := rnd(3, maxradius)
|
|
||||||
img.drawCircle(color, rnd(r, maxx-r), rnd(r, maxy-r), r)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (img *Image) drawHorizLine(color color.Color, fromX, toX, y int) {
|
|
||||||
for x := fromX; x <= toX; x++ {
|
|
||||||
img.Set(x, y, color)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (img *Image) drawCircle(color color.Color, x, y, radius int) {
|
|
||||||
f := 1 - radius
|
|
||||||
dfx := 1
|
|
||||||
dfy := -2 * radius
|
|
||||||
xx := 0
|
|
||||||
yy := radius
|
|
||||||
img.Set(x, y+radius, color)
|
|
||||||
img.Set(x, y-radius, color)
|
|
||||||
img.drawHorizLine(color, x-radius, x+radius, y)
|
|
||||||
for xx < yy {
|
|
||||||
if f >= 0 {
|
|
||||||
yy--
|
|
||||||
dfy += 2
|
|
||||||
f += dfy
|
|
||||||
}
|
|
||||||
xx++
|
|
||||||
dfx += 2
|
|
||||||
f += dfx
|
|
||||||
img.drawHorizLine(color, x-xx, x+xx, y+yy)
|
|
||||||
img.drawHorizLine(color, x-xx, x+xx, y-yy)
|
|
||||||
img.drawHorizLine(color, x-yy, x+yy, y+xx)
|
|
||||||
img.drawHorizLine(color, x-yy, x+yy, y-xx)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (img *Image) strikeThrough() {
|
|
||||||
r := 0
|
|
||||||
maxx := img.Bounds().Max.X
|
|
||||||
maxy := img.Bounds().Max.Y
|
|
||||||
y := rnd(maxy/3, maxy-maxy/3)
|
|
||||||
for x := 0; x < maxx; x += r {
|
|
||||||
r = rnd(1, img.dotsize/3)
|
|
||||||
y += rnd(-img.dotsize/2, img.dotsize/2)
|
|
||||||
if y <= 0 || y >= maxy {
|
|
||||||
y = rnd(maxy/3, maxy-maxy/3)
|
|
||||||
}
|
|
||||||
img.drawCircle(img.color, x, y, r)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (img *Image) drawDigit(digit []byte, x, y int) {
|
|
||||||
skf := rand.Float64() * float64(rnd(-maxSkew, maxSkew))
|
|
||||||
xs := float64(x)
|
|
||||||
minr := img.dotsize / 2 // minumum radius
|
|
||||||
maxr := img.dotsize/2 + img.dotsize/4 // maximum radius
|
|
||||||
y += rnd(-minr, minr)
|
|
||||||
for yy := 0; yy < fontHeight; yy++ {
|
|
||||||
for xx := 0; xx < fontWidth; xx++ {
|
|
||||||
if digit[yy*fontWidth+xx] != blackChar {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
// Introduce random variations.
|
|
||||||
or := rnd(minr, maxr)
|
|
||||||
ox := x + (xx * img.dotsize) + rnd(0, or/2)
|
|
||||||
oy := y + (yy * img.dotsize) + rnd(0, or/2)
|
|
||||||
img.drawCircle(img.color, ox, oy, or)
|
|
||||||
}
|
|
||||||
xs += skf
|
|
||||||
x = int(xs)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func setRandomBrightness(c *color.NRGBA, max uint8) {
|
|
||||||
minc := min3(c.R, c.G, c.B)
|
|
||||||
maxc := max3(c.R, c.G, c.B)
|
|
||||||
if maxc > max {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
n := rand.Intn(int(max-maxc)) - int(minc)
|
|
||||||
c.R = uint8(int(c.R) + n)
|
|
||||||
c.G = uint8(int(c.G) + n)
|
|
||||||
c.B = uint8(int(c.B) + n)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func min3(x, y, z uint8) (o uint8) {
|
|
||||||
o = x
|
|
||||||
if y < o {
|
|
||||||
o = y
|
|
||||||
}
|
|
||||||
if z < o {
|
|
||||||
o = z
|
|
||||||
}
|
|
||||||
return
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func max3(x, y, z uint8) (o uint8) {
|
|
||||||
o = x
|
|
||||||
if y > o {
|
|
||||||
o = y
|
|
||||||
}
|
|
||||||
if z > o {
|
|
||||||
o = z
|
|
||||||
}
|
|
||||||
return
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// rnd returns a random number in range [from, to].
|
|
||||||
|
|
||||||
func rnd(from, to int) int {
|
|
||||||
//println(to+1-from)
|
|
||||||
return rand.Intn(to+1-from) + from
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const (
|
|
||||||
// Standard length of uniuri string to achive ~95 bits of entropy.
|
|
||||||
StdLen = 16
|
|
||||||
// Length of uniurl string to achive ~119 bits of entropy, closest
|
|
||||||
// to what can be losslessly converted to UUIDv4 (122 bits).
|
|
||||||
UUIDLen = 20
|
|
||||||
)
|
|
||||||
|
|
||||||
// Standard characters allowed in uniuri string.
|
|
||||||
|
|
||||||
var StdChars = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")
|
|
||||||
|
|
||||||
// New returns a new random string of the standard length, consisting of
|
|
||||||
// standard characters.
|
|
||||||
|
|
||||||
func New() string {
|
|
||||||
return NewLenChars(StdLen, StdChars)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewLen returns a new random string of the provided length, consisting of
|
|
||||||
// standard characters.
|
|
||||||
|
|
||||||
func NewLen(length int) string {
|
|
||||||
return NewLenChars(length, StdChars)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewLenChars returns a new random string of the provided length, consisting
|
|
||||||
// of the provided byte slice of allowed characters (maximum 256).
|
|
||||||
|
|
||||||
func NewLenChars(length int, chars []byte) string {
|
|
||||||
b := make([]byte, length)
|
|
||||||
r := make([]byte, length+(length/4)) // storage for random bytes.
|
|
||||||
clen := byte(len(chars))
|
|
||||||
maxrb := byte(256 - (256 % len(chars)))
|
|
||||||
i := 0
|
|
||||||
for {
|
|
||||||
if _, err := io.ReadFull(crand.Reader, r); err != nil {
|
|
||||||
panic("error reading from random source: " + err.Error())
|
|
||||||
}
|
|
||||||
for _, c := range r {
|
|
||||||
if c >= maxrb {
|
|
||||||
// Skip this number to avoid modulo bias.
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
b[i] = chars[c%clen]
|
|
||||||
i++
|
|
||||||
if i == length {
|
|
||||||
return string(b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
panic("unreachable")
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateVerifyCodeImg() (*Image, string) {
|
|
||||||
d := make([]byte, 4)
|
|
||||||
s := NewLen(4)
|
|
||||||
ss := ""
|
|
||||||
d = []byte(s)
|
|
||||||
for v := range d {
|
|
||||||
d[v] %= 10
|
|
||||||
ss += strconv.FormatInt(int64(d[v]), 32)
|
|
||||||
}
|
|
||||||
return NewImage(d, 100, 40), ss
|
|
||||||
}
|
|
||||||
|
|
||||||
func pic(w http.ResponseWriter, req *http.Request) {
|
|
||||||
d := make([]byte, 4)
|
|
||||||
s := NewLen(4)
|
|
||||||
ss := ""
|
|
||||||
d = []byte(s)
|
|
||||||
for v := range d {
|
|
||||||
d[v] %= 10
|
|
||||||
ss += strconv.FormatInt(int64(d[v]), 32)
|
|
||||||
}
|
|
||||||
w.Header().Set("Content-Type", "image/png")
|
|
||||||
NewImage(d, 100, 40).WriteTo(w)
|
|
||||||
fmt.Println(ss)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func index(w http.ResponseWriter, req *http.Request) {
|
|
||||||
str := "<meta charset=\"utf-8\"><h3>golang 图片验证码例子</h3><img border=\"1\" src=\"/pic\" alt=\"图片验证码\" onclick=\"this.src='/pic'\" />"
|
|
||||||
w.Header().Set("Content-Type", "text/html")
|
|
||||||
w.Write([]byte(str))
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
http.HandleFunc("/pic", pic)
|
|
||||||
http.HandleFunc("/", index)
|
|
||||||
s := &http.Server{
|
|
||||||
Addr: ":8080",
|
|
||||||
ReadTimeout: 30 * time.Second,
|
|
||||||
WriteTimeout: 30 * time.Second,
|
|
||||||
MaxHeaderBytes: 1 << 20}
|
|
||||||
s.ListenAndServe()
|
|
||||||
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for 配置数据库连接
|
|
||||||
** @Time : 2018-12-22 13:55:26
|
|
||||||
** @Author : Joker
|
|
||||||
** @File : init_database.go
|
|
||||||
** @Last Modified by : Joker
|
|
||||||
** @Last Modified time:2018-12-22 13:55:26
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package utils
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/beego/beego/v2/client/orm"
|
|
||||||
beego "github.com/beego/beego/v2/server/web"
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
|
||||||
)
|
|
||||||
|
|
||||||
//初始化数据连接
|
|
||||||
func InitDatabase() bool {
|
|
||||||
//读取配置文件,设置数据库参数
|
|
||||||
dbType, _ := beego.AppConfig.String("db_type")
|
|
||||||
dbAlias, _ := beego.AppConfig.String(dbType + "::db_alias")
|
|
||||||
dbName, _ := beego.AppConfig.String(dbType + "::db_name")
|
|
||||||
dbUser, _ := beego.AppConfig.String(dbType + "::db_user")
|
|
||||||
dbPwd, _ := beego.AppConfig.String(dbType + "::db_pwd")
|
|
||||||
dbHost, _ := beego.AppConfig.String(dbType + "::db_host")
|
|
||||||
dbPort, _ := beego.AppConfig.String(dbType + "::db_port")
|
|
||||||
|
|
||||||
var err error
|
|
||||||
switch dbType {
|
|
||||||
case "sqlite3":
|
|
||||||
err = orm.RegisterDataBase(dbAlias, dbType, dbName)
|
|
||||||
case "mysql":
|
|
||||||
dbCharset, _ := beego.AppConfig.String(dbType + "::db_charset")
|
|
||||||
err = orm.RegisterDriver(dbType, orm.DRMySQL)
|
|
||||||
err = orm.RegisterDataBase(dbAlias, dbType, dbUser+":"+dbPwd+"@tcp("+dbHost+":"+
|
|
||||||
dbPort+")/"+dbName+"?charset="+dbCharset)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
/***************************************************
|
|
||||||
** @Desc : This file for 发送短信验证码
|
|
||||||
** @Time : 2019.04.04 9:37
|
|
||||||
** @Author : Joker
|
|
||||||
** @File : send_messages
|
|
||||||
** @Last Modified by : Joker
|
|
||||||
** @Last Modified time: 2019-11-29 11:05:41
|
|
||||||
** @Software: GoLand
|
|
||||||
****************************************************/
|
|
||||||
package utils
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"gateway/enum"
|
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
)
|
|
||||||
|
|
||||||
// 发送提现通知
|
|
||||||
func SendSmsForPay(mobile, code string) bool {
|
|
||||||
tplValue := url.Values{"#code#": {code}}.Encode()
|
|
||||||
dataTplSms := url.Values{
|
|
||||||
"apikey": {enum.ApiKey},
|
|
||||||
"mobile": {mobile},
|
|
||||||
"tpl_id": {fmt.Sprintf("%d", enum.TPL1)},
|
|
||||||
"tpl_value": {tplValue}}
|
|
||||||
_, err := http.PostForm(enum.SendSmsUrl, dataTplSms)
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
@ -1,7 +1,9 @@
|
|||||||
#基本信息
|
#基本信息
|
||||||
appname = shop
|
appname = shop
|
||||||
httpport = 3800
|
httpport = 12308
|
||||||
runmode = dev
|
runmode = dev
|
||||||
|
siteName = 传奇支付
|
||||||
|
host=localhost
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue