From 7cd2e963ad8c961c8ba420100472958bd11674e6 Mon Sep 17 00:00:00 2001 From: kongyuebin Date: Thu, 11 Nov 2021 10:30:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BA=86boss=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=BA=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- boss/common/mq_config.go | 25 - boss/common/pay_way_code.go | 99 -- boss/common/supplier.go | 27 +- boss/conf/app.conf | 10 +- boss/controllers/addController.go | 903 ++++-------------- boss/controllers/baseController.go | 15 +- boss/controllers/deleteController.go | 286 +----- boss/controllers/filterController.go | 26 +- boss/controllers/getController.go | 285 +++--- boss/controllers/loginController.go | 33 +- boss/controllers/pageController.go | 2 - boss/controllers/queryController.go | 76 +- boss/controllers/sendNotifyMerchant.go | 75 -- .../sendNotifyMerchantController.go | 38 + boss/controllers/updateController.go | 439 +-------- boss/{controllers => datas}/datas.go | 59 +- boss/message_queue/active_mq.go | 45 - boss/message_queue/send_message.go | 33 - boss/models/{ => accounts}/account.go | 2 +- .../{ => accounts}/account_history_info.go | 12 +- boss/models/{ => agent}/agent_info.go | 14 +- boss/models/{ => agent}/agent_profit.go | 2 +- boss/models/init.go | 21 +- .../{ => merchant}/merchant_deploy_info.go | 51 +- boss/models/{ => merchant}/merchant_info.go | 21 +- .../{ => merchant}/merchant_load_info.go | 2 +- boss/models/{ => notify}/notify_info.go | 35 +- boss/models/{ => order}/order_info.go | 30 +- boss/models/{ => order}/order_profit_info.go | 2 +- boss/models/{ => order}/order_settle_info.go | 2 +- boss/models/{ => order}/platform_profit.go | 2 +- boss/models/{ => payfor}/payfor_info.go | 36 +- boss/models/{ => road}/road_info.go | 2 +- boss/models/{ => road}/road_pool_info.go | 2 +- boss/models/{ => system}/bank_card_info.go | 2 +- boss/models/{ => system}/menu_info.go | 12 +- boss/models/{ => system}/power_info.go | 2 +- boss/models/{ => system}/role_info.go | 2 +- boss/models/{ => system}/second_menu_info.go | 17 +- boss/models/transaction.go | 5 +- boss/models/{ => user}/user_info.go | 2 +- boss/supplier/alipay.go | 70 -- boss/supplier/consts.go | 14 - boss/supplier/gateway_solve.go | 48 - boss/supplier/init.go | 32 - boss/supplier/kuaifu.go | 381 -------- boss/supplier/order_settle.go | 192 ---- boss/supplier/pay_solve.go | 489 ---------- boss/supplier/payfor_solve.go | 350 ------- boss/supplier/supplier_interface.go | 41 - boss/supplier/weixin.go | 70 -- boss/{gojson => utils}/gojson.go | 2 +- boss/views/account.html | 16 +- boss/views/create_agent.html | 1 + boss/views/index.html | 5 +- boss/views/merchant.html | 27 +- boss/views/operator.html | 11 +- boss/views/order_info.html | 16 +- boss/views/payfor_record.html | 8 +- boss/views/road.html | 8 +- boss/views/role.html | 2 +- boss/views/self_plus_sub.html | 28 +- 62 files changed, 663 insertions(+), 3902 deletions(-) delete mode 100644 boss/common/mq_config.go delete mode 100644 boss/common/pay_way_code.go delete mode 100644 boss/controllers/sendNotifyMerchant.go create mode 100644 boss/controllers/sendNotifyMerchantController.go rename boss/{controllers => datas}/datas.go (76%) delete mode 100644 boss/message_queue/active_mq.go delete mode 100644 boss/message_queue/send_message.go rename boss/models/{ => accounts}/account.go (99%) rename boss/models/{ => accounts}/account_history_info.go (85%) rename boss/models/{ => agent}/agent_info.go (91%) rename boss/models/{ => agent}/agent_profit.go (95%) rename boss/models/{ => merchant}/merchant_deploy_info.go (64%) rename boss/models/{ => merchant}/merchant_info.go (88%) rename boss/models/{ => merchant}/merchant_load_info.go (98%) rename boss/models/{ => notify}/notify_info.go (67%) rename boss/models/{ => order}/order_info.go (88%) rename boss/models/{ => order}/order_profit_info.go (99%) rename boss/models/{ => order}/order_settle_info.go (98%) rename boss/models/{ => order}/platform_profit.go (97%) rename boss/models/{ => payfor}/payfor_info.go (86%) rename boss/models/{ => road}/road_info.go (99%) rename boss/models/{ => road}/road_pool_info.go (99%) rename boss/models/{ => system}/bank_card_info.go (99%) rename boss/models/{ => system}/menu_info.go (93%) rename boss/models/{ => system}/power_info.go (99%) rename boss/models/{ => system}/role_info.go (99%) rename boss/models/{ => system}/second_menu_info.go (93%) rename boss/models/{ => user}/user_info.go (99%) delete mode 100644 boss/supplier/alipay.go delete mode 100644 boss/supplier/consts.go delete mode 100644 boss/supplier/gateway_solve.go delete mode 100644 boss/supplier/init.go delete mode 100644 boss/supplier/kuaifu.go delete mode 100644 boss/supplier/order_settle.go delete mode 100644 boss/supplier/pay_solve.go delete mode 100644 boss/supplier/payfor_solve.go delete mode 100644 boss/supplier/supplier_interface.go delete mode 100644 boss/supplier/weixin.go rename boss/{gojson => utils}/gojson.go (99%) diff --git a/boss/common/mq_config.go b/boss/common/mq_config.go deleted file mode 100644 index 472bdcd..0000000 --- a/boss/common/mq_config.go +++ /dev/null @@ -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) -} diff --git a/boss/common/pay_way_code.go b/boss/common/pay_way_code.go deleted file mode 100644 index a848388..0000000 --- a/boss/common/pay_way_code.go +++ /dev/null @@ -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 "未知" - } -} diff --git a/boss/common/supplier.go b/boss/common/supplier.go index 9276277..fad0596 100644 --- a/boss/common/supplier.go +++ b/boss/common/supplier.go @@ -14,34 +14,9 @@ var supplierCode2Name = map[string]string{ "KF": "快付支付", "WEIXIN": "官方微信", "ALIPAY": "官方支付宝", + "DAILI": "代丽支付", } 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 "未找到上游名称,注册有问题。" -} diff --git a/boss/conf/app.conf b/boss/conf/app.conf index c62b300..deae992 100644 --- a/boss/conf/app.conf +++ b/boss/conf/app.conf @@ -8,5 +8,11 @@ sessionon = true dbhost = localhost dbport = 3306 dbuser = root -dbpasswd = -dbbase = juhe_pay \ No newline at end of file +dbpasswd = Kyb^15273031604 +dbbase = juhe_pay + +[gateway] +host = http://localhost:12309/ +#orderUrl = http://localhost:12309/gateway/supplier/order/query +#updateOrderUrl = http://localhost:12309/gateway/update/order +#payforUrl = http://localhost:12309/gateway/update/order \ No newline at end of file diff --git a/boss/controllers/addController.go b/boss/controllers/addController.go index d8310ab..e8dcffd 100644 --- a/boss/controllers/addController.go +++ b/boss/controllers/addController.go @@ -11,10 +11,13 @@ package controllers import ( "boss/common" - "boss/models" + "boss/datas" + "boss/models/merchant" + "boss/models/payfor" + "boss/models/road" + "boss/models/system" + "boss/service" "boss/utils" - "fmt" - "github.com/beego/beego/v2/adapter/validation" "github.com/beego/beego/v2/core/logs" "github.com/rs/xid" "strconv" @@ -30,25 +33,9 @@ type AddController struct { */ func (c *AddController) AddMenu() { oneMenu := c.GetString("oneMenu") - - dataJSON := new(BaseDataJSON) - menuInfo := models.MenuInfo{MenuUid: xid.New().String(), FirstMenu: oneMenu, Status: "active", - Creater: c.GetSession("userID").(string), CreateTime: utils.GetBasicDateTime()} - - exist := models.FirstMenuIsExists(oneMenu) - if !exist { - menuInfo.MenuOrder = models.GetMenuLen() + 1 - flag := models.InsertMenu(menuInfo) - if !flag { - dataJSON.Code = -1 - dataJSON.Msg = "添加菜单失败" - } else { - dataJSON.Code = 200 - } - } else { - dataJSON.Code = -1 - dataJSON.Msg = "一级菜单名已经存在" - } + userID := c.GetSession("userID").(string) + se := new(service.AddService) + dataJSON := se.AddMenu(oneMenu, userID) c.GenerateJSON(dataJSON) } @@ -59,39 +46,11 @@ func (c *AddController) AddSecondMenu() { firstMenuUid := c.GetString("preMenuUid") secondMenu := c.GetString("secondMenu") secondRouter := c.GetString("secondRouter") + userID := c.GetSession("userID").(string) - dataJSON := new(KeyDataJSON) + se := new(service.AddService) + dataJSON := se.AddSecondMenu(firstMenuUid, secondRouter, secondMenu, userID) - firstMenuInfo := models.GetMenuInfoByMenuUid(firstMenuUid) - routerExists := models.SecondRouterExists(secondRouter) - secondMenuExists := models.SecondMenuIsExists(secondMenu) - - if firstMenuInfo.MenuUid == "" { - dataJSON.Code = -1 - dataJSON.Key = "pre-menu-error" - dataJSON.Msg = "*一级菜单不存在" - } else if routerExists { - dataJSON.Code = -1 - dataJSON.Msg = "*该路由已存在" - dataJSON.Key = "second-router-error" - } else if secondMenuExists { - dataJSON.Code = -1 - dataJSON.Key = "second-menu-error" - dataJSON.Msg = "*该菜单名已经存在" - } else { - sl := models.GetSecondMenuLenByFirstMenuUid(firstMenuUid) - secondMenuInfo := models.SecondMenuInfo{MenuOrder: sl + 1, FirstMenuUid: firstMenuInfo.MenuUid, - FirstMenu: firstMenuInfo.FirstMenu, SecondMenuUid: xid.New().String(), Status: "active", - SecondMenu: secondMenu, SecondRouter: secondRouter, Creater: c.GetSession("userID").(string), - CreateTime: utils.GetBasicDateTime(), UpdateTime: utils.GetBasicDateTime(), FirstMenuOrder: firstMenuInfo.MenuOrder} - if !models.InsertSecondMenu(secondMenuInfo) { - dataJSON.Code = -1 - dataJSON.Msg = "添加二级菜单失败" - } else { - dataJSON.Code = 200 - dataJSON.Msg = "添加二级菜单成功" - } - } c.GenerateJSON(dataJSON) } @@ -103,687 +62,217 @@ func (c *AddController) AddPower() { secondMenuUid := strings.TrimSpace(c.GetString("secondMenuUid")) powerItem := strings.TrimSpace(c.GetString("powerItem")) powerID := strings.TrimSpace(c.GetString("powerID")) + userID := c.GetSession("userID").(string) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = -1 - if powerItem == "" || len(powerItem) == 0 { - keyDataJSON.Key = ".power-name-error" - keyDataJSON.Msg = "*权限项名称不能为空" - c.GenerateJSON(keyDataJSON) - return - } - if powerID == "" || len(powerID) == 0 { - keyDataJSON.Key = ".power-id-error" - keyDataJSON.Msg = "*权限项ID不能为空" - c.GenerateJSON(keyDataJSON) - return - } - if models.PowerUidExists(powerID) { - keyDataJSON.Key = ".power-id-error" - keyDataJSON.Msg = "*权限项ID已经存在" - c.GenerateJSON(keyDataJSON) - return - } + se := new(service.AddService) + keyDataJSON := se.AddPower(powerItem, powerID, firstMenuUid, secondMenuUid, userID) - fmt.Println(powerID) - - secondMenuInfo := models.GetSecondMenuInfoBySecondMenuUid(secondMenuUid) - - powerInfo := models.PowerInfo{SecondMenuUid: secondMenuUid, SecondMenu: secondMenuInfo.SecondMenu, - PowerId: powerID, PowerItem: powerItem, Creater: c.GetSession("userID").(string), - Status: "active", CreateTime: utils.GetBasicDateTime(), UpdateTime: utils.GetBasicDateTime(), - FirstMenuUid: firstMenuUid} - - keyDataJSON.Code = 200 - if !models.InsertPowerInfo(powerInfo) { - keyDataJSON.Key = ".power-save-success" - keyDataJSON.Msg = "添加权限项失败" - } else { - keyDataJSON.Key = ".power-save-success" - keyDataJSON.Msg = "添加权限项成功" - } c.GenerateJSON(keyDataJSON) } /* * 添加权限角色 */ -func (this *AddController) AddRole() { - roleName := strings.TrimSpace(this.GetString("roleNameAdd")) - roleRemark := strings.TrimSpace(this.GetString("roleRemark")) - - keyDataJSON := new(KeyDataJSON) - if len(roleName) == 0 { - keyDataJSON.Code = -1 - keyDataJSON.Key = ".role-name-error" - keyDataJSON.Msg = "*角色名称不能为空" - this.GenerateJSON(keyDataJSON) - return - } - - if models.RoleNameExists(roleName) { - keyDataJSON.Code = -1 - keyDataJSON.Key = ".role-name-error" - keyDataJSON.Msg = "*角色名称已经存在" - this.GenerateJSON(keyDataJSON) - return - } - - roleInfo := models.RoleInfo{RoleName: roleName, RoleUid: xid.New().String(), - Creater: this.GetSession("userID").(string), Status: "active", Remark: roleRemark, - CreateTime: utils.GetBasicDateTime(), UpdateTime: utils.GetBasicDateTime()} - - if !models.InsertRole(roleInfo) { - keyDataJSON.Code = -1 - keyDataJSON.Key = ".role-save-success" - keyDataJSON.Msg = "添加角色失败" - this.GenerateJSON(keyDataJSON) - return - } - - keyDataJSON.Code = 200 - this.GenerateJSON(keyDataJSON) +func (c *AddController) AddRole() { + roleName := strings.TrimSpace(c.GetString("roleNameAdd")) + roleRemark := strings.TrimSpace(c.GetString("roleRemark")) + userID := c.GetSession("userID").(string) + se := new(service.AddService) + keyDataJSON := se.AddRole(roleName, roleRemark, userID) + c.GenerateJSON(keyDataJSON) } -func (this *AddController) SavePower() { - firstMenuUids := this.GetStrings("firstMenuUid[]") - secondMenuUids := this.GetStrings("secondMenuUid[]") - powerIds := this.GetStrings("powerId[]") - roleUid := strings.TrimSpace(this.GetString("roleUid")) +func (c *AddController) SavePower() { + firstMenuUids := c.GetStrings("firstMenuUid[]") + secondMenuUids := c.GetStrings("secondMenuUid[]") + powerIds := c.GetStrings("powerId[]") + roleUid := strings.TrimSpace(c.GetString("roleUid")) - dataJSON := new(BaseDataJSON) - roleInfo := models.GetRoleByRoleUid(roleUid) - if len(roleUid) == 0 || len(roleInfo.RoleUid) == 0 { - dataJSON.Code = -1 - this.GenerateJSON(dataJSON) - } - - roleInfo.UpdateTime = utils.GetBasicDateTime() - roleInfo.ShowFirstUid = strings.Join(firstMenuUids, "||") - roleInfo.ShowSecondUid = strings.Join(secondMenuUids, "||") - roleInfo.ShowPowerUid = strings.Join(powerIds, "||") - - menuInfoList := models.GetMenuInfosByMenuUids(firstMenuUids) - showFirstMenu := make([]string, 0) - for _, m := range menuInfoList { - showFirstMenu = append(showFirstMenu, m.FirstMenu) - } - roleInfo.ShowFirstMenu = strings.Join(showFirstMenu, "||") - - secondMenuInfoList := models.GetSecondMenuInfoBySecondMenuUids(secondMenuUids) - showSecondMenu := make([]string, 0) - for _, m := range secondMenuInfoList { - showSecondMenu = append(showSecondMenu, m.SecondMenu) - } - roleInfo.ShowSecondMenu = strings.Join(showSecondMenu, "||") - - powerList := models.GetPowerByIds(powerIds) - showPower := make([]string, 0) - for _, p := range powerList { - showPower = append(showPower, p.PowerItem) - } - roleInfo.ShowPower = strings.Join(showPower, "||") - - if !models.UpdateRoleInfo(roleInfo) { - dataJSON.Code = -1 - dataJSON.Msg = "更新roleInfo失败" - } else { - dataJSON.Code = 200 - dataJSON.Msg = "更新roleInfo成功" - } - this.GenerateJSON(dataJSON) + se := new(service.AddService) + dataJSON := se.SavePower(roleUid, firstMenuUids, secondMenuUids, powerIds) + c.GenerateJSON(dataJSON) } /* * 添加操作员 */ -func (this *AddController) AddOperator() { - loginAccount := strings.TrimSpace(this.GetString("operatorAccount")) - loginPassword := strings.TrimSpace(this.GetString("operatorPassword")) - role := strings.TrimSpace(this.GetString("operatorRole")) - status := strings.TrimSpace(this.GetString("status")) - remark := strings.TrimSpace(this.GetString("remark")) +func (c *AddController) AddOperator() { + loginAccount := strings.TrimSpace(c.GetString("operatorAccount")) + loginPassword := strings.TrimSpace(c.GetString("operatorPassword")) + role := strings.TrimSpace(c.GetString("operatorRole")) + status := strings.TrimSpace(c.GetString("status")) + remark := strings.TrimSpace(c.GetString("remark")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = -1 - if len(loginAccount) == 0 { - keyDataJSON.Key = ".operator-name-error" - keyDataJSON.Msg = "*登录账号不能为空" - } else if len(loginPassword) == 0 { - keyDataJSON.Key = ".operator-password-error" - keyDataJSON.Msg = "*初始密码不能为空" - } else if len(role) == 0 || role == "none" { - keyDataJSON.Key = ".operator-role-error" - keyDataJSON.Msg = "请选择角色" - } else if models.UserInfoExistByUserId(loginAccount) { - keyDataJSON.Key = ".operator-name-error" - keyDataJSON.Msg = "*账号已经存在" - } else { - if len(remark) == 0 { - remark = loginAccount - } - roleInfo := models.GetRoleByRoleUid(role) - userInfo := models.UserInfo{UserId: loginAccount, Passwd: utils.GetMD5Upper(loginPassword), Nick: "壮壮", Remark: remark, - Status: status, Role: role, RoleName: roleInfo.RoleName, CreateTime: utils.GetBasicDateTime(), UpdateTime: utils.GetBasicDateTime()} - if !models.InsertUser(userInfo) { - keyDataJSON.Code = 200 - keyDataJSON.Msg = "添加操作员失败" - } else { - keyDataJSON.Code = 200 - keyDataJSON.Msg = "添加操作员成功" - } - } - this.GenerateJSON(keyDataJSON) + se := new(service.AddService) + keyDataJSON := se.AddOperator(loginAccount, loginPassword, role, status, remark) + + c.GenerateJSON(keyDataJSON) } /* * 添加银行卡 */ -func (this *AddController) AddBankCard() { - userName := strings.TrimSpace(this.GetString("userName")) - bankCode := strings.TrimSpace(this.GetString("bankCode")) - accountName := strings.TrimSpace(this.GetString("accountName")) - certificateType := strings.TrimSpace(this.GetString("certificateType")) - phoneNo := strings.TrimSpace(this.GetString("phoneNo")) - bankName := strings.TrimSpace(this.GetString("bankName")) - bankAccountType := strings.TrimSpace(this.GetString("bankAccountType")) - bankNo := strings.TrimSpace(this.GetString("bankNo")) - identifyCard := strings.TrimSpace(this.GetString("certificateType")) - certificateNo := strings.TrimSpace(this.GetString("certificateNo")) - bankAddress := strings.TrimSpace(this.GetString("bankAddress")) - uid := strings.TrimSpace(this.GetString("uid")) +func (c *AddController) AddBankCard() { + userName := strings.TrimSpace(c.GetString("userName")) + bankCode := strings.TrimSpace(c.GetString("bankCode")) + accountName := strings.TrimSpace(c.GetString("accountName")) + certificateType := strings.TrimSpace(c.GetString("certificateType")) + phoneNo := strings.TrimSpace(c.GetString("phoneNo")) + bankName := strings.TrimSpace(c.GetString("bankName")) + bankAccountType := strings.TrimSpace(c.GetString("bankAccountType")) + bankNo := strings.TrimSpace(c.GetString("bankNo")) + identifyCard := strings.TrimSpace(c.GetString("certificateType")) + certificateNo := strings.TrimSpace(c.GetString("certificateNo")) + bankAddress := strings.TrimSpace(c.GetString("bankAddress")) + uid := strings.TrimSpace(c.GetString("uid")) - dataJSON := new(BaseDataJSON) + se := new(service.AddService) + dataJSON := se.AddBankCard(userName, bankCode, accountName, certificateType, phoneNo, + bankName, bankAccountType, bankNo, certificateNo, bankAddress, uid, identifyCard) - dataJSON.Code = -1 - if len(userName) == 0 { - dataJSON.Msg = "用户名不能为空" - } else if len(bankCode) == 0 { - dataJSON.Msg = "银行编码不能为空" - } else if len(accountName) == 0 { - dataJSON.Msg = "银行开户名不能为空" - } else if len(certificateType) == 0 { - dataJSON.Msg = "证件种类不能为空" - } else if len(phoneNo) == 0 { - dataJSON.Msg = "手机号不能为空" - } else if len(bankName) == 0 { - dataJSON.Msg = "银行名称不能为空" - } else if len(bankAccountType) == 0 { - dataJSON.Msg = "银行账户类型不能为空" - } else if len(bankNo) == 0 { - dataJSON.Msg = "银行账号不能为空" - } else if len(certificateNo) == 0 { - dataJSON.Msg = "身份证号不能为空" - } else if len(bankAddress) == 0 { - dataJSON.Msg = "银行地址不能为空" - } else { - - } - if dataJSON.Msg != "" { - logs.Error("添加银行卡校验失败") - } else { - if len(uid) > 0 { - bankCardInfo := models.GetBankCardByUid(uid) - bankCardInfo = models.BankCardInfo{ - Id: bankCardInfo.Id, UserName: userName, BankName: bankName, - BankCode: bankCode, BankAccountType: bankAccountType, - AccountName: accountName, BankNo: bankNo, IdentifyCard: identifyCard, - CertificateNo: certificateNo, PhoneNo: phoneNo, - BankAddress: bankAddress, UpdateTime: utils.GetBasicDateTime(), - CreateTime: bankCardInfo.CreateTime, Uid: bankCardInfo.Uid, - } - if models.UpdateBankCard(bankCardInfo) { - dataJSON.Code = 200 - } - } else { - bankCardInfo := models.BankCardInfo{Uid: "3333" + xid.New().String(), UserName: userName, BankName: bankName, - BankCode: bankCode, BankAccountType: bankAccountType, AccountName: accountName, BankNo: bankNo, - IdentifyCard: identifyCard, CertificateNo: certificateNo, PhoneNo: phoneNo, BankAddress: bankAddress, - UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if models.InsertBankCardInfo(bankCardInfo) { - dataJSON.Code = 200 - } - } - } - - this.GenerateJSON(dataJSON) + c.GenerateJSON(dataJSON) } /* * 添加通道 */ -func (this *AddController) AddRoad() { - roadUid := strings.TrimSpace(this.GetString("roadUid")) - roadName := strings.TrimSpace(this.GetString("roadName")) - roadRemark := strings.TrimSpace(this.GetString("roadRemark")) - productUid := strings.TrimSpace(this.GetString("productName")) - payType := strings.TrimSpace(this.GetString("payType")) - basicRate := strings.TrimSpace(this.GetString("basicRate")) - settleFee := strings.TrimSpace(this.GetString("settleFee")) - roadTotalLimit := strings.TrimSpace(this.GetString("roadTotalLimit")) - roadEverydayLimit := strings.TrimSpace(this.GetString("roadEverydayLimit")) - singleMinLimit := strings.TrimSpace(this.GetString("singleMinLimit")) - singleMaxLimit := strings.TrimSpace(this.GetString("singleMaxLimit")) - startHour := strings.TrimSpace(this.GetString("startHour")) - endHour := strings.TrimSpace(this.GetString("endHour")) - params := strings.TrimSpace(this.GetString("params")) +func (c *AddController) AddRoad() { + roadUid := strings.TrimSpace(c.GetString("roadUid")) + roadName := strings.TrimSpace(c.GetString("roadName")) + roadRemark := strings.TrimSpace(c.GetString("roadRemark")) + productUid := strings.TrimSpace(c.GetString("productName")) + payType := strings.TrimSpace(c.GetString("payType")) + basicRate := strings.TrimSpace(c.GetString("basicRate")) + settleFee := strings.TrimSpace(c.GetString("settleFee")) + roadTotalLimit := strings.TrimSpace(c.GetString("roadTotalLimit")) + roadEverydayLimit := strings.TrimSpace(c.GetString("roadEverydayLimit")) + singleMinLimit := strings.TrimSpace(c.GetString("singleMinLimit")) + singleMaxLimit := strings.TrimSpace(c.GetString("singleMaxLimit")) + startHour := strings.TrimSpace(c.GetString("startHour")) + endHour := strings.TrimSpace(c.GetString("endHour")) + params := strings.TrimSpace(c.GetString("params")) - dataJSON := new(BaseDataJSON) - dataJSON.Code = -1 + se := new(service.AddService) + dataJSON := se.AddRoad(startHour, endHour, roadName, productUid, payType, basicRate, settleFee, + roadTotalLimit, roadEverydayLimit, singleMinLimit, singleMaxLimit, roadUid, roadRemark, params) - startHourTmp, err1 := strconv.Atoi(startHour) - endHourTmp, err2 := strconv.Atoi(endHour) - - if err1 != nil || err2 != nil { - dataJSON.Msg = "开始时间或者结束时间设置有误" - this.GenerateJSON(dataJSON) - return - } - - valid := validation.Validation{} - if v := valid.Required(roadName, "roadName"); !v.Ok { - dataJSON.Msg = "通道名称不能为空" - } else if v := valid.Required(productUid, "productUid"); !v.Ok { - dataJSON.Msg = "产品名称不能为空" - } else if v := valid.Required(payType, "payType"); !v.Ok { - dataJSON.Msg = "支付类型不能为空" - } else if v := valid.Required(basicRate, ""); !v.Ok { - dataJSON.Msg = "成本费率不能为空" - } else if v := valid.Range(startHourTmp, 0, 23, ""); !v.Ok { - dataJSON.Msg = "开始时间设置有误" - } else if v := valid.Range(endHourTmp, 0, 23, ""); !v.Ok { - dataJSON.Msg = "结束时间设置有误" - } else { - basicFee, err := strconv.ParseFloat(basicRate, 64) - if err != nil { - dataJSON.Msg = "成本汇率设置不符合规范" - } - settleFeeTmp, err := strconv.ParseFloat(settleFee, 64) - if err != nil { - dataJSON.Msg = "代付手续费设置不符合规范" - } - totalLimit, err := strconv.ParseFloat(roadTotalLimit, 64) - if err != nil { - dataJSON.Msg = "通道总额度设置不符合规范" - } - todayLimit, err := strconv.ParseFloat(roadEverydayLimit, 64) - if err != nil { - dataJSON.Msg = "每天额度设置不符合规范" - } - singleMinLimitTmp, err := strconv.ParseFloat(singleMinLimit, 64) - if err != nil { - dataJSON.Msg = "单笔最小金额设置不符合规范" - } - singleMaxLimitTmp, err := strconv.ParseFloat(singleMaxLimit, 64) - if err != nil { - dataJSON.Msg = "单笔最大金额设置不符合规范" - } - if len(dataJSON.Msg) > 0 { - this.GenerateJSON(dataJSON) - return - } - productName := "" - supplierMap := common.GetSupplierMap() - for k, v := range supplierMap { - if k == productUid { - productName = v - } - } - - if len(roadUid) > 0 { - //更新通道 - roadInfo := models.GetRoadInfoByRoadUid(roadUid) - roadInfo.RoadName = roadName - roadInfo.Remark = roadRemark - roadInfo.ProductUid = productUid - roadInfo.ProductName = productName - roadInfo.PayType = payType - roadInfo.BasicFee = basicFee - roadInfo.SettleFee = settleFeeTmp - roadInfo.TotalLimit = totalLimit - roadInfo.TodayLimit = todayLimit - roadInfo.SingleMaxLimit = singleMaxLimitTmp - roadInfo.SingleMinLimit = singleMinLimitTmp - roadInfo.StarHour = startHourTmp - roadInfo.EndHour = endHourTmp - roadInfo.Params = params - - if models.UpdateRoadInfo(roadInfo) { - dataJSON.Code = 200 - } else { - dataJSON.Msg = "通道更新失败" - } - } else { - //添加新的通道 - roadUid = "4444" + xid.New().String() - roadInfo := models.RoadInfo{RoadName: roadName, RoadUid: roadUid, Remark: roadRemark, - ProductUid: productUid, ProductName: productName, PayType: payType, BasicFee: basicFee, SettleFee: settleFeeTmp, - TotalLimit: totalLimit, TodayLimit: todayLimit, SingleMinLimit: singleMinLimitTmp, Balance: common.ZERO, - SingleMaxLimit: singleMaxLimitTmp, StarHour: startHourTmp, EndHour: endHourTmp, Status: "active", - Params: params, UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime(), - } - - if models.InsertRoadInfo(roadInfo) { - dataJSON.Code = 200 - } else { - dataJSON.Msg = "添加新通道失败" - } - } - } - - this.GenerateJSON(dataJSON) + c.GenerateJSON(dataJSON) } -func (this *AddController) AddRoadPool() { - roadPoolName := strings.TrimSpace(this.GetString("roadPoolName")) - roadPoolCode := strings.TrimSpace(this.GetString("roadPoolCode")) +func (c *AddController) AddRoadPool() { + roadPoolName := strings.TrimSpace(c.GetString("roadPoolName")) + roadPoolCode := strings.TrimSpace(c.GetString("roadPoolCode")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = -1 + se := new(service.AddService) + keyDataJSON := se.AddRoadPool(roadPoolName, roadPoolCode) - if len(roadPoolName) == 0 { - keyDataJSON.Msg = "*通道池名称不能为空" - } else if len(roadPoolCode) == 0 { - keyDataJSON.Msg = "*通道池编号不能为空" - } - - roadPoolInfo := models.RoadPoolInfo{Status: "active", RoadPoolName: roadPoolName, RoadPoolCode: roadPoolCode, - UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if models.InsertRoadPool(roadPoolInfo) { - keyDataJSON.Code = 200 - keyDataJSON.Msg = "添加通道池成功" - } else { - keyDataJSON.Msg = "添加通道池失败" - } - - this.GenerateJSON(keyDataJSON) + c.GenerateJSON(keyDataJSON) } /* * 添加或者更新通道池中的通道 */ -func (this *AddController) SaveRoadUid() { - roadUids := this.GetStrings("roadUid[]") - roadPoolCode := strings.TrimSpace(this.GetString("roadPoolCode")) +func (c *AddController) SaveRoadUid() { + roadUids := c.GetStrings("roadUid[]") + roadPoolCode := strings.TrimSpace(c.GetString("roadPoolCode")) - dataJSON := new(BaseDataJSON) - dataJSON.Code = -1 - roadPoolInfo := models.GetRoadPoolByRoadPoolCode(roadPoolCode) - if roadPoolInfo.RoadPoolCode == "" { - this.GenerateJSON(dataJSON) - return - } - var uids []string - for _, uid := range roadUids { - //去掉空格 - if len(uid) > 0 && models.RoadInfoExistByRoadUid(uid) { - uids = append(uids, uid) - } - } - if len(uids) > 0 { - roadUid := strings.Join(uids, "||") - roadPoolInfo.RoadUidPool = roadUid - } - roadPoolInfo.UpdateTime = utils.GetBasicDateTime() - if models.UpdateRoadPool(roadPoolInfo) { - dataJSON.Code = 200 - } - this.GenerateJSON(dataJSON) + se := new(service.AddService) + dataJSON := se.SaveRoadUid(roadPoolCode, roadUids) + + c.GenerateJSON(dataJSON) } /* * 添加代理信息 */ -func (this *AddController) AddAgent() { - agentName := strings.TrimSpace(this.GetString("agentName")) - agentPhone := strings.TrimSpace(this.GetString("agentPhone")) - agentLoginPassword := strings.TrimSpace(this.GetString("agentLoginPassword")) - agentVertifyPassword := strings.TrimSpace(this.GetString("agentVertifyPassword")) - agentRemark := strings.TrimSpace(this.GetString("agentRemark")) - status := strings.TrimSpace(this.GetString("status")) - agentUid := strings.TrimSpace(this.GetString("agentUid")) +func (c *AddController) AddAgent() { + agentName := strings.TrimSpace(c.GetString("agentName")) + agentPhone := strings.TrimSpace(c.GetString("agentPhone")) + agentLoginPassword := strings.TrimSpace(c.GetString("agentLoginPassword")) + agentVertifyPassword := strings.TrimSpace(c.GetString("agentVertifyPassword")) + agentRemark := strings.TrimSpace(c.GetString("agentRemark")) + status := strings.TrimSpace(c.GetString("status")) + agentUid := strings.TrimSpace(c.GetString("agentUid")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = 200 + se := new(service.AddService) + keyDataJSON := se.AddAgent(agentName, agentPhone, agentLoginPassword, agentVertifyPassword, status, agentUid, agentRemark) - if agentName == "" { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#agent-name-error" - keyDataJSON.Msg = "代理名不能为空" - } else if models.IsEixstByAgentName(agentName) { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#agent-name-error" - keyDataJSON.Msg = "已存在该代理名称" - } else if agentPhone == "" { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#agent-phone-error" - keyDataJSON.Msg = "代理注册手机号不能为空" - } else if models.IsEixstByAgentPhone(agentPhone) { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#agent-phone-error" - keyDataJSON.Msg = "代理商手机号已被注册" - } else if agentLoginPassword == "" { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#agent-login-password-error" - keyDataJSON.Msg = "密码不能为空" - } else if agentLoginPassword != agentVertifyPassword { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#agent-vertify-password-error" - keyDataJSON.Msg = "二次密码输入不一致" - } - - if keyDataJSON.Code == -1 { - this.GenerateJSON(keyDataJSON) - return - } - - if status == "" { - status = "active" - } - - if agentUid == "" { - - agentUid = "9999" + xid.New().String() - - agentInfo := models.AgentInfo{Status: status, AgentName: agentName, AgentPhone: agentPhone, - AgentPassword: utils.GetMD5Upper(agentLoginPassword), AgentUid: agentUid, UpdateTime: utils.GetBasicDateTime(), - CreateTime: utils.GetBasicDateTime(), AgentRemark: agentRemark} - - if !models.InsertAgentInfo(agentInfo) { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "添加代理商失败" - } - } - - //创建新的账户 - account := models.GetAccountByUid(agentUid) - if account.AccountUid == "" { - account.Status = "active" - account.AccountUid = agentUid - account.AccountName = agentName - account.Balance = 0.0 - account.LoanAmount = 0.0 - account.FreezeAmount = 0.0 - account.PayforAmount = 0.0 - account.SettleAmount = 0.0 - account.WaitAmount = 0.0 - account.UpdateTime = utils.GetBasicDateTime() - account.CreateTime = utils.GetBasicDateTime() - if models.InsetAcount(account) { - keyDataJSON.Code = 200 - keyDataJSON.Msg = "插入成功" - } else { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "掺入失败" - } - } - - this.GenerateJSON(keyDataJSON) + c.GenerateJSON(keyDataJSON) } -func (this *AddController) AddMerchant() { - merchantName := strings.TrimSpace(this.GetString("merchantName")) - phone := strings.TrimSpace(this.GetString("phone")) - loginPassword := strings.TrimSpace(this.GetString("loginPassword")) - verifyPassword := strings.TrimSpace(this.GetString("verifyPassword")) - merchantStatus := strings.TrimSpace(this.GetString("merchantStatus")) - remark := strings.TrimSpace(this.GetString("remark")) +func (c *AddController) AddMerchant() { + merchantName := strings.TrimSpace(c.GetString("merchantName")) + phone := strings.TrimSpace(c.GetString("phone")) + loginPassword := strings.TrimSpace(c.GetString("loginPassword")) + verifyPassword := strings.TrimSpace(c.GetString("verifyPassword")) + merchantStatus := strings.TrimSpace(c.GetString("merchantStatus")) + remark := strings.TrimSpace(c.GetString("remark")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = 200 - if merchantName == "" { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#merchant-name-error" - keyDataJSON.Msg = "商户名称为空" - } else if models.IsExistByMerchantName(merchantName) { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#merchant-name-error" - keyDataJSON.Msg = "商户名已经存在" - } else if phone == "" { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#merchant-phone-error" - keyDataJSON.Msg = "手机号为空" - } else if models.IsExistByMerchantPhone(phone) { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#merchant-phone-error" - keyDataJSON.Msg = "该手机号已经注册" - } else if loginPassword == "" { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#merchant-login-password-error" - keyDataJSON.Msg = "登录密码为空" - } else if verifyPassword == "" { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#merchant-verify-password-error" - keyDataJSON.Msg = "密码确认为空" - } else if loginPassword != verifyPassword { - keyDataJSON.Key = "#merchant-verify-password-error" - keyDataJSON.Msg = "两次密码输入不正确" - } else if merchantStatus == "" { - merchantStatus = "active" - } - if keyDataJSON.Code == -1 { - this.GenerateJSON(keyDataJSON) - return - } - merchantUid := "8888" + xid.New().String() - merchantKey := "kkkk" + xid.New().String() //商户key - merchantSecret := "ssss" + xid.New().String() //商户密钥 - merchantInfo := models.MerchantInfo{MerchantName: merchantName, MerchantUid: merchantUid, - LoginAccount: phone, MerchantKey: merchantKey, MerchantSecret: merchantSecret, - LoginPassword: utils.GetMD5Upper(loginPassword), Status: merchantStatus, Remark: remark, - UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if models.InsertMerchantInfo(merchantInfo) { - keyDataJSON.Code = 200 - } else { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "插入失败" - } - //创建新的账户 - account := models.GetAccountByUid(merchantUid) - if account.AccountUid == "" { - account.Status = "active" - account.AccountUid = merchantUid - account.AccountName = merchantName - account.Balance = 0.0 - account.LoanAmount = 0.0 - account.FreezeAmount = 0.0 - account.PayforAmount = 0.0 - account.SettleAmount = 0.0 - account.WaitAmount = 0.0 - account.UpdateTime = utils.GetBasicDateTime() - account.CreateTime = utils.GetBasicDateTime() - if models.InsetAcount(account) { - keyDataJSON.Code = 200 - keyDataJSON.Msg = "插入成功" - } else { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "掺入失败" - } - } - this.GenerateJSON(keyDataJSON) + se := new(service.AddService) + keyDataJSON := se.AddMerchant(merchantName, phone, loginPassword, verifyPassword, merchantStatus, remark) + c.GenerateJSON(keyDataJSON) } /* * 添加商戶支付配置參數 */ -func (this *AddController) AddMerchantDeploy() { - //merchantName := strings.TrimSpace(this.GetString("merchantName")) - merchantUid := strings.TrimSpace(this.GetString("merchantNo")) - isAutoSettle := strings.TrimSpace(this.GetString("isAutoSettle")) - isAutoPayfor := strings.TrimSpace(this.GetString("isAutoPayfor")) - ipWhite := strings.TrimSpace(this.GetString("ipWhite")) - payforRoadChoose := strings.TrimSpace(this.GetString("payforRoadChoose")) - rollPayforRoadChoose := strings.TrimSpace(this.GetString("rollPayforRoadChoose")) - payforFee := strings.TrimSpace(this.GetString("payforFee")) - belongAgentName := strings.TrimSpace(this.GetString("belongAgentName")) - belongAgentUid := strings.TrimSpace(this.GetString("belongAgentUid")) +func (c *AddController) AddMerchantDeploy() { + merchantUid := strings.TrimSpace(c.GetString("merchantNo")) + isAutoSettle := strings.TrimSpace(c.GetString("isAutoSettle")) + isAutoPayfor := strings.TrimSpace(c.GetString("isAutoPayfor")) + ipWhite := strings.TrimSpace(c.GetString("ipWhite")) + payforRoadChoose := strings.TrimSpace(c.GetString("payforRoadChoose")) + rollPayforRoadChoose := strings.TrimSpace(c.GetString("rollPayforRoadChoose")) + payforFee := strings.TrimSpace(c.GetString("payforFee")) + belongAgentName := strings.TrimSpace(c.GetString("belongAgentName")) + belongAgentUid := strings.TrimSpace(c.GetString("belongAgentUid")) - keyDataJSON := new(KeyDataJSON) - merchantInfo := models.GetMerchantByUid(merchantUid) - merchantInfo.AutoSettle = isAutoSettle - merchantInfo.AutoPayFor = isAutoPayfor - merchantInfo.WhiteIps = ipWhite - merchantInfo.BelongAgentName = belongAgentName - merchantInfo.BelongAgentUid = belongAgentUid + se := new(service.AddService) + keyDataJSON := se.AddMerchantDeploy(merchantUid, isAutoSettle, isAutoPayfor, ipWhite, belongAgentName, + belongAgentUid, payforRoadChoose, rollPayforRoadChoose, payforFee) - if payforRoadChoose != "" { - roadInfo := models.GetRoadInfoByName(payforRoadChoose) - merchantInfo.SinglePayForRoadName = payforRoadChoose - merchantInfo.SinglePayForRoadUid = roadInfo.RoadUid - } - if rollPayforRoadChoose != "" { - rollPoolInfo := models.GetRoadPoolByName(rollPayforRoadChoose) - merchantInfo.RollPayForRoadName = rollPayforRoadChoose - merchantInfo.RollPayForRoadCode = rollPoolInfo.RoadPoolCode - } - tmp, err := strconv.ParseFloat(payforFee, 64) - if err != nil { - logs.Error("手续费由字符串转为float64失败") - tmp = common.PAYFOR_FEE - } - merchantInfo.PayforFee = tmp - if models.UpdateMerchant(merchantInfo) { - keyDataJSON.Code = 200 - } else { - keyDataJSON.Code = -1 - } - this.GenerateJSON(keyDataJSON) + c.GenerateJSON(keyDataJSON) } -func (this *AddController) AddMerchantPayType() { - merchantNo := strings.TrimSpace(this.GetString("merchantNo")) - payType := strings.TrimSpace(this.GetString("payType")) - singleRoad := strings.TrimSpace(this.GetString("singleRoad")) - singleRoadPlatformFee := strings.TrimSpace(this.GetString("singleRoadPlatformFee")) - singleRoadAgentFee := strings.TrimSpace(this.GetString("singleRoadAgentFee")) - rollPoolRoad := strings.TrimSpace(this.GetString("rollPoolRoad")) - rollRoadPlatformFee := strings.TrimSpace(this.GetString("rollRoadPlatformFee")) - rollRoadAgentFee := strings.TrimSpace(this.GetString("rollRoadAgentFee")) - isLoan := strings.TrimSpace(this.GetString("isLoan")) - loanRate := strings.TrimSpace(this.GetString("loanRate")) - loanDays := strings.TrimSpace(this.GetString("loanDays")) - unfreezeTimeHour := strings.TrimSpace(this.GetString("unfreezeTimeHour")) +func (c *AddController) AddMerchantPayType() { + merchantNo := strings.TrimSpace(c.GetString("merchantNo")) + payType := strings.TrimSpace(c.GetString("payType")) + singleRoad := strings.TrimSpace(c.GetString("singleRoad")) + singleRoadPlatformFee := strings.TrimSpace(c.GetString("singleRoadPlatformFee")) + singleRoadAgentFee := strings.TrimSpace(c.GetString("singleRoadAgentFee")) + rollPoolRoad := strings.TrimSpace(c.GetString("rollPoolRoad")) + rollRoadPlatformFee := strings.TrimSpace(c.GetString("rollRoadPlatformFee")) + rollRoadAgentFee := strings.TrimSpace(c.GetString("rollRoadAgentFee")) + isLoan := strings.TrimSpace(c.GetString("isLoan")) + loanRate := strings.TrimSpace(c.GetString("loanRate")) + loanDays := strings.TrimSpace(c.GetString("loanDays")) + unfreezeTimeHour := strings.TrimSpace(c.GetString("unfreezeTimeHour")) - keyDataJSON := new(KeyDataJSON) + keyDataJSON := new(datas.KeyDataJSON) if payType == "" || payType == "none" { keyDataJSON.Code = -1 keyDataJSON.Msg = "操作失败,请选择支付类型" - this.GenerateJSON(keyDataJSON) + c.GenerateJSON(keyDataJSON) return } - if singleRoad == "" && (singleRoadPlatformFee != "" || singleRoadAgentFee != "") { + + if singleRoad == "" && rollPoolRoad == "" { keyDataJSON.Code = -1 - keyDataJSON.Msg = "单通道选项不能为空" - } else if rollPoolRoad == "" && (rollRoadPlatformFee != "" || rollRoadAgentFee != "") { + keyDataJSON.Msg = "单通道、轮询通道至少要有一个不为空!" + } + + if singleRoad != "" && singleRoadPlatformFee == "" { keyDataJSON.Code = -1 - keyDataJSON.Msg = "轮询通道选项不能为空" + keyDataJSON.Msg = "单通道平台利润率不能为0" + } + + if rollPoolRoad != "" && rollRoadPlatformFee == "" { + keyDataJSON.Code = -1 + keyDataJSON.Msg = "轮询通道平台利润率不能为0" } if keyDataJSON.Code == -1 { - this.GenerateJSON(keyDataJSON) + c.GenerateJSON(keyDataJSON) return } @@ -796,9 +285,9 @@ func (this *AddController) AddMerchantPayType() { if err != nil { b = 0.0 } - c, err := strconv.ParseFloat(rollRoadPlatformFee, 64) + cs, err := strconv.ParseFloat(rollRoadPlatformFee, 64) if err != nil { - c = 0.0 + cs = 0.0 } d, err := strconv.ParseFloat(rollRoadAgentFee, 64) if err != nil { @@ -817,29 +306,29 @@ func (this *AddController) AddMerchantPayType() { j = 0 } - var merchantDeployInfo models.MerchantDeployInfo + var merchantDeployInfo merchant.MerchantDeployInfo merchantDeployInfo.MerchantUid = merchantNo merchantDeployInfo.PayType = payType merchantDeployInfo.SingleRoadName = singleRoad merchantDeployInfo.SingleRoadPlatformRate = a merchantDeployInfo.SingleRoadAgentRate = b - merchantDeployInfo.RollRoadPlatformRate = c + merchantDeployInfo.RollRoadPlatformRate = cs merchantDeployInfo.RollRoadAgentRate = d merchantDeployInfo.IsLoan = isLoan merchantDeployInfo.LoanRate = e merchantDeployInfo.LoanDays = i merchantDeployInfo.UnfreezeHour = j merchantDeployInfo.RollRoadName = rollPoolRoad - roadInfo := models.GetRoadInfoByName(singleRoad) - rollPoolInfo := models.GetRoadPoolByName(rollPoolRoad) + roadInfo := road.GetRoadInfoByName(singleRoad) + rollPoolInfo := road.GetRoadPoolByName(rollPoolRoad) merchantDeployInfo.SingleRoadUid = roadInfo.RoadUid merchantDeployInfo.RollRoadCode = rollPoolInfo.RoadPoolCode //如果该用户的改支付类型已经存在,那么进行更新,否则进行添加 - if models.IsExistByUidAndPayType(merchantNo, payType) { + if merchant.IsExistByUidAndPayType(merchantNo, payType) { if singleRoad == "" && rollPoolRoad == "" { //表示需要删除该支付类型的通道 - if models.DeleteMerchantDeployByUidAndPayType(merchantNo, payType) { + if merchant.DeleteMerchantDeployByUidAndPayType(merchantNo, payType) { keyDataJSON.Code = 200 keyDataJSON.Msg = "删除该支付类型通道成功" } else { @@ -847,11 +336,12 @@ func (this *AddController) AddMerchantPayType() { keyDataJSON.Msg = "删除该支付类型通道失败" } } else { - tmpInfo := models.GetMerchantDeployByUidAndPayType(merchantNo, payType) + tmpInfo := merchant.GetMerchantDeployByUidAndPayType(merchantNo, payType) merchantDeployInfo.Id = tmpInfo.Id merchantDeployInfo.Status = tmpInfo.Status merchantDeployInfo.UpdateTime = utils.GetBasicDateTime() - if models.UpdateMerchantDeploy(merchantDeployInfo) { + merchantDeployInfo.CreateTime = tmpInfo.CreateTime + if merchant.UpdateMerchantDeploy(merchantDeployInfo) { keyDataJSON.Code = 200 keyDataJSON.Msg = "更新成功" } else { @@ -867,7 +357,7 @@ func (this *AddController) AddMerchantPayType() { merchantDeployInfo.CreateTime = utils.GetBasicDateTime() merchantDeployInfo.UpdateTime = utils.GetBasicDateTime() merchantDeployInfo.Status = common.ACTIVE - if models.InsertMerchantDeployInfo(merchantDeployInfo) { + if merchant.InsertMerchantDeployInfo(merchantDeployInfo) { keyDataJSON.Code = 200 keyDataJSON.Msg = "添加支付类型成功" } else { @@ -876,7 +366,7 @@ func (this *AddController) AddMerchantPayType() { } } } - this.GenerateJSON(keyDataJSON) + c.GenerateJSON(keyDataJSON) } /* @@ -889,61 +379,13 @@ func (c *AddController) AddPayFor() { accountName := strings.TrimSpace(c.GetString("accountName")) bankUid := strings.TrimSpace(c.GetString("bankUid")) bankNo := strings.TrimSpace(c.GetString("bankNo")) - //cardType := strings.TrimSpace(c.GetString("cardType")) bankAddress := strings.TrimSpace(c.GetString("bankAddress")) phone := strings.TrimSpace(c.GetString("phone")) payForAmount := strings.TrimSpace(c.GetString("payForAmount")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = -1 - - if merchantUid == "" { - keyDataJSON.Msg = "请选择需要下发的商户" - c.GenerateJSON(keyDataJSON) - return - } - - if bankUid == "" { - keyDataJSON.Msg = "请选择发下银行卡" - c.GenerateJSON(keyDataJSON) - return - } - - money, err := strconv.ParseFloat(payForAmount, 64) - if err != nil { - logs.Error("add pay for fail: ", err) - keyDataJSON.Msg = "下发金额输入不正确" - c.GenerateJSON(keyDataJSON) - return - } - - accountInfo := models.GetAccountByUid(merchantUid) - if accountInfo.SettleAmount < money+common.PAYFOR_FEE { - keyDataJSON.Msg = "用户可用金额不够" - c.GenerateJSON(keyDataJSON) - return - } - - bankInfo := models.GetBankCardByUid(bankUid) - - if bankInfo.BankNo != bankNo || bankInfo.AccountName != accountName || bankInfo.PhoneNo != phone { - keyDataJSON.Msg = "银行卡信息有误,请连接管理员" - c.GenerateJSON(keyDataJSON) - return - } - - payFor := models.PayforInfo{PayforUid: "pppp" + xid.New().String(), MerchantUid: merchantUid, MerchantName: merchantName, PhoneNo: phone, - MerchantOrderId: xid.New().String(), BankOrderId: "4444" + xid.New().String(), PayforFee: common.PAYFOR_FEE, Type: common.SELF_MERCHANT, - PayforAmount: money, PayforTotalAmount: money + common.PAYFOR_FEE, BankCode: bankInfo.BankCode, BankName: bankName, IsSend: common.NO, - BankAccountName: bankInfo.AccountName, BankAccountNo: bankInfo.BankNo, BankAccountType: bankInfo.BankAccountType, BankAccountAddress: bankAddress, - Status: common.PAYFOR_COMFRIM, CreateTime: utils.GetBasicDateTime(), UpdateTime: utils.GetBasicDateTime()} - - if models.InsertPayfor(payFor) { - keyDataJSON.Code = 200 - } else { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "代付下发提交失败" - } + se := new(service.AddService) + keyDataJSON := se.AddPayFor(merchantUid, bankUid, payForAmount, bankNo, + accountName, phone, merchantName, bankName, bankAddress) c.GenerateJSON(keyDataJSON) } @@ -953,12 +395,11 @@ func (c *AddController) AddSelfPayFor() { bankName := strings.TrimSpace(c.GetString("bankName")) accountName := strings.TrimSpace(c.GetString("accountName")) bankNo := strings.TrimSpace(c.GetString("bankNo")) - //cardType := strings.TrimSpace(c.GetString("cardType")) bankAddress := strings.TrimSpace(c.GetString("bankAddress")) phone := strings.TrimSpace(c.GetString("phone")) payForAmount := strings.TrimSpace(c.GetString("payForAmount")) - keyDataJSON := new(KeyDataJSON) + keyDataJSON := new(datas.KeyDataJSON) keyDataJSON.Code = -1 if bankUid == "" { @@ -974,7 +415,7 @@ func (c *AddController) AddSelfPayFor() { return } - bankInfo := models.GetBankCardByUid(bankUid) + bankInfo := system.GetBankCardByUid(bankUid) //需要对前端传入的数据做校验,不能完全相信前端的数据 if bankInfo.AccountName != accountName || bankInfo.BankNo != bankNo || bankInfo.PhoneNo != phone { @@ -983,12 +424,12 @@ func (c *AddController) AddSelfPayFor() { return } - selfPayFor := models.PayforInfo{PayforUid: "pppp" + xid.New().String(), BankOrderId: "4444" + xid.New().String(), PayforFee: common.ZERO, Type: common.SELF_HELP, + selfPayFor := payfor.PayforInfo{PayforUid: "pppp" + xid.New().String(), BankOrderId: "4444" + xid.New().String(), PayforFee: common.ZERO, Type: common.SELF_HELP, PayforAmount: money, PayforTotalAmount: money + common.ZERO, BankCode: bankInfo.BankCode, BankName: bankName, IsSend: common.NO, BankAccountName: bankInfo.AccountName, BankAccountNo: bankInfo.BankNo, BankAccountType: bankInfo.BankAccountType, BankAccountAddress: bankAddress, Status: common.PAYFOR_COMFRIM, CreateTime: utils.GetBasicDateTime(), UpdateTime: utils.GetBasicDateTime()} - if models.InsertPayfor(selfPayFor) { + if payfor.InsertPayfor(selfPayFor) { keyDataJSON.Code = 200 } else { keyDataJSON.Msg = "数据处理失败,请重新提交" diff --git a/boss/controllers/baseController.go b/boss/controllers/baseController.go index c991a1f..1c8e7f7 100644 --- a/boss/controllers/baseController.go +++ b/boss/controllers/baseController.go @@ -1,6 +1,9 @@ package controllers -import beego "github.com/beego/beego/v2/server/web" +import ( + "boss/datas" + beego "github.com/beego/beego/v2/server/web" +) type BaseController struct { beego.Controller @@ -8,20 +11,20 @@ type BaseController struct { func (c *BaseController) GenerateJSON(dataJSON interface{}) { c.Data["json"] = dataJSON - c.ServeJSON() + _ = c.ServeJSON() } func (c *BaseController) Prepare() { userID, ok := c.GetSession("userID").(string) if !ok || userID == "" { //用户没有登录,或者登录到期了,则跳转登录主页面 - dataJSON := new(BaseDataJSON) + dataJSON := new(datas.BaseDataJSON) dataJSON.Code = 404 dataJSON.Msg = "登录已经过期!" c.Data["json"] = dataJSON - c.ServeJSON() + _ = c.ServeJSON() } else { //重新赋值给session - c.SetSession("userID", userID) + _ = c.SetSession("userID", userID) } -} \ No newline at end of file +} diff --git a/boss/controllers/deleteController.go b/boss/controllers/deleteController.go index bb6edd6..6e21308 100644 --- a/boss/controllers/deleteController.go +++ b/boss/controllers/deleteController.go @@ -10,195 +10,73 @@ package controllers import ( - "boss/models" - "boss/utils" - "github.com/beego/beego/v2/core/logs" - "sort" + "boss/service" "strings" ) -type Deletecontroller struct { +type DeleteController struct { BaseController } -func (c *Deletecontroller) Finish() { - remainderFirstMenuUid := make([]string, 0) - remainderFirstMenu := make([]string, 0) - remainderSecondMenuUid := make([]string, 0) - remainderSecondMenu := make([]string, 0) - remainderPowerId := make([]string, 0) - remainderPower := make([]string, 0) - allRoleInfo := models.GetRole() - //如果有删除任何的东西,需要重新赋值权限 - for _, r := range allRoleInfo { - for _, showFirstUid := range strings.Split(r.ShowFirstUid, "||") { - if models.FirstMenuUidIsExists(showFirstUid) { - remainderFirstMenuUid = append(remainderFirstMenuUid, showFirstUid) - menuInfo := models.GetMenuInfoByMenuUid(showFirstUid) - remainderFirstMenu = append(remainderFirstMenu, menuInfo.FirstMenu) - } - } - for _, showSecondUid := range strings.Split(r.ShowSecondUid, "||") { - if models.SecondMenuUidIsExists(showSecondUid) { - remainderSecondMenuUid = append(remainderSecondMenuUid, showSecondUid) - secondMenuInfo := models.GetSecondMenuInfoBySecondMenuUid(showSecondUid) - remainderSecondMenu = append(remainderSecondMenu, secondMenuInfo.SecondMenu) - } - } - for _, showPowerId := range strings.Split(r.ShowPowerUid, "||") { - if models.PowerUidExists(showPowerId) { - remainderPowerId = append(remainderPowerId, showPowerId) - powerInfo := models.GetPowerById(showPowerId) - remainderPower = append(remainderPower, powerInfo.PowerItem) - } - } - r.ShowFirstUid = strings.Join(remainderFirstMenuUid, "||") - r.ShowFirstMenu = strings.Join(remainderFirstMenu, "||") - r.ShowSecondUid = strings.Join(remainderSecondMenuUid, "||") - r.ShowSecondMenu = strings.Join(remainderSecondMenu, "||") - r.ShowPowerUid = strings.Join(remainderPowerId, "||") - r.ShowPower = strings.Join(remainderPower, "||") - r.UpdateTime = utils.GetBasicDateTime() - models.UpdateRoleInfo(r) - } +func (c *DeleteController) Finish() { + se := new(service.DeleteService) + se.Finish() } -func (c *Deletecontroller) DeleteMenu() { +func (c *DeleteController) DeleteMenu() { menuUid := c.GetString("menuUid") - menuInfo := models.GetMenuInfoByMenuUid(menuUid) - dataJSON := new(BaseDataJSON) - if menuInfo.MenuUid == "" { - dataJSON.Msg = "不存在该菜单" - dataJSON.Code = -1 - } else { - logs.Info(c.GetSession("userID").(string) + ",执行了删除一级菜单操作") - models.DeleteMenuInfo(menuUid) - //删除该一级目下下的所有二级目录 - models.DeleteSecondMenuByFirstMenuUid(menuUid) - SortFirstMenuOrder() - dataJSON.Code = 200 - } + se := new(service.DeleteService) + dataJSON := se.DeleteMenu(menuUid, c.GetSession("userID").(string)) + c.Data["json"] = dataJSON - c.ServeJSONP() + _ = c.ServeJSONP() } -/* -* 对一级菜单重新进行排序 - */ -func SortFirstMenuOrder() { - menuInfoList := models.GetMenuAll() - sort.Sort(models.MenuInfoSlice(menuInfoList)) - - for i := 0; i < len(menuInfoList); i++ { - m := menuInfoList[i] - m.UpdateTime = utils.GetBasicDateTime() - m.MenuOrder = i + 1 - models.UpdateMenuInfo(m) - //对应的二级菜单也应该重新分配顺序号 - SortSecondMenuOrder(m) - } -} - -/* -* 对二级菜单分配顺序号 - */ -func SortSecondMenuOrder(firstMenuInfo models.MenuInfo) { - secondMenuInfoList := models.GetSecondMenuListByFirstMenuUid(firstMenuInfo.MenuUid) - for _, sm := range secondMenuInfoList { - sm.FirstMenuOrder = firstMenuInfo.MenuOrder - sm.UpdateTime = utils.GetBasicDateTime() - models.UpdateSecondMenu(sm) - //删除下下一级的所有权限项 - models.DeletePowerBySecondUid(sm.SecondMenuUid) - } -} - -func (c *Deletecontroller) DeleteSecondMenu() { +func (c *DeleteController) DeleteSecondMenu() { secondMenuUid := strings.TrimSpace(c.GetString("secondMenuUid")) - secondMenuInfo := models.GetSecondMenuInfoBySecondMenuUid(secondMenuUid) - dataJSON := new(BaseDataJSON) - if secondMenuUid == "" || secondMenuInfo.SecondMenuUid == "" { - dataJSON.Code = -1 - dataJSON.Msg = "该二级菜单不存在" - } else { - if models.DeleteSecondMenuBySecondMenuUid(secondMenuUid) { - dataJSON.Code = 200 - ml := models.GetSecondMenuLenByFirstMenuUid(secondMenuInfo.FirstMenuUid) - //删除该二级页面下的所有权限项 - models.DeletePowerBySecondUid(secondMenuUid) - if ml == 0 { - //如果该二级类目已经被全部删除,那么对应的一级类目也应当删除 - models.DeleteMenuInfo(secondMenuInfo.FirstMenuUid) - SortFirstMenuOrder() - } else { - secondMenuInfoList := models.GetSecondMenuListByFirstMenuUid(secondMenuInfo.FirstMenuUid) - sort.Sort(models.SecondMenuSlice(secondMenuInfoList)) - for i := 0; i < len(secondMenuInfoList); i++ { - m := secondMenuInfoList[i] - models.UpdateSecondMenuOrderBySecondUid(m.SecondMenuUid, i+1) - } - } - } else { - dataJSON.Code = -1 - dataJSON.Msg = "删除失败" - } - } + se := new(service.DeleteService) + dataJSON := se.DeleteSecondMenu(secondMenuUid) + c.Data["json"] = dataJSON - c.ServeJSON() + _ = c.ServeJSON() } /* * 删除权限项 */ -func (c *Deletecontroller) DeletePowerItem() { +func (c *DeleteController) DeletePowerItem() { powerID := strings.TrimSpace(c.GetString("powerID")) - models.DeletePowerItemByPowerID(powerID) - dataJSON := new(BaseDataJSON) - dataJSON.Code = 200 + se := new(service.DeleteService) + dataJSON := se.DeletePowerItem(powerID) c.GenerateJSON(dataJSON) } /* * 删除角色 */ -func (c *Deletecontroller) DeleteRole() { +func (c *DeleteController) DeleteRole() { roleUid := strings.TrimSpace(c.GetString("roleUid")) - dataJSON := new(BaseDataJSON) - - if models.DeleteRoleByRoleUid(roleUid) { - dataJSON.Code = 200 - } else { - dataJSON.Code = -1 - } + se := new(service.DeleteService) + dataJSON := se.DeleteRole(roleUid) c.GenerateJSON(dataJSON) } /* * 删除操作员 */ -func (c *Deletecontroller) DeleteOperator() { +func (c *DeleteController) DeleteOperator() { userId := strings.TrimSpace(c.GetString("userId")) - - dataJSON := new(BaseDataJSON) - - if models.DeleteUserByUserId(userId) { - dataJSON.Code = 200 - } else { - dataJSON.Code = -1 - } + se := new(service.DeleteService) + dataJSON := se.DeleteOperator(userId) c.GenerateJSON(dataJSON) } -func (c *Deletecontroller) DeleteBankCardRecord() { +func (c *DeleteController) DeleteBankCardRecord() { uid := strings.TrimSpace(c.GetString("uid")) + se := new(service.DeleteService) - dataJSON := new(BankCardDataJSON) - dataJSON.Code = -1 - - if models.DeleteBankCardByUid(uid) { - dataJSON.Code = 200 - } + dataJSON := se.DeleteBankCardRecord(uid) c.GenerateJSON(dataJSON) } @@ -206,135 +84,65 @@ func (c *Deletecontroller) DeleteBankCardRecord() { /* * 删除通道操作 */ -func (c *Deletecontroller) DeleteRoad() { +func (c *DeleteController) DeleteRoad() { roadUid := strings.TrimSpace(c.GetString("roadUid")) - dataJSON := new(BaseDataJSON) - dataJSON.Code = -1 + se := new(service.DeleteService) + dataJSON := se.DeleteRoad(roadUid) - if models.DeleteRoadByRoadUid(roadUid) { - dataJSON.Code = 200 - } - params := make(map[string]string) - roadPoolInfoList := models.GetAllRollPool(params) - //将轮询池中的对应的通道删除 - for _, roadPoolInfo := range roadPoolInfoList { - var uids []string - roadInfoList := strings.Split(roadPoolInfo.RoadUidPool, "||") - for _, uid := range roadInfoList { - if uid != roadUid { - uids = append(uids, uid) - } - } - roadPoolInfo.RoadUidPool = strings.Join(uids, "||") - roadPoolInfo.UpdateTime = utils.GetBasicDateTime() - models.UpdateRoadPool(roadPoolInfo) - } c.GenerateJSON(dataJSON) } /* * 删除通道池 */ -func (c *Deletecontroller) DeleteRoadPool() { +func (c *DeleteController) DeleteRoadPool() { roadPoolCode := strings.TrimSpace(c.GetString("roadPoolCode")) - dataJSON := new(BaseDataJSON) - dataJSON.Code = -1 + se := new(service.DeleteService) + dataJSON := se.DeleteRoadPool(roadPoolCode) - if models.DeleteRoadPoolByCode(roadPoolCode) { - dataJSON.Code = 200 - } else { - dataJSON.Msg = "删除通道池失败" - } c.GenerateJSON(dataJSON) } /* * 删除商户 */ -func (c *Deletecontroller) DeleteMerchant() { +func (c *DeleteController) DeleteMerchant() { merchantUid := strings.TrimSpace(c.GetString("merchantUid")) - keyDataJSON := new(KeyDataJSON) - if merchantUid == "" { - keyDataJSON.Code = -1 - c.GenerateJSON(keyDataJSON) - return - } + se := new(service.DeleteService) + keyDataJSON := se.DeleteMerchant(merchantUid) - if models.DeleteMerchantByUid(merchantUid) { - keyDataJSON.Code = 200 - } else { - keyDataJSON.Code = -1 - } c.GenerateJSON(keyDataJSON) } /* * 删除账户 */ -func (c *Deletecontroller) DeleteAccount() { +func (c *DeleteController) DeleteAccount() { accountUid := strings.TrimSpace(c.GetString("accountUid")) - - dataJSON := new(BaseDataJSON) - models.IsExistByMerchantUid(accountUid) - if models.IsExistByMerchantUid(accountUid) || models.IsExistByAgentUid(accountUid) { - dataJSON.Code = -1 - dataJSON.Msg = "用户还存在,不能删除" - } else { - if models.DeleteAccountByUid(accountUid) { - dataJSON.Code = 200 - dataJSON.Msg = "删除账户成功" - } else { - dataJSON.Code = -1 - dataJSON.Msg = "删除账户失败" - } - } + se := new(service.DeleteService) + dataJSON := se.DeleteAccount(accountUid) c.GenerateJSON(dataJSON) } -func (c *Deletecontroller) DeleteAgent() { +func (c *DeleteController) DeleteAgent() { agentUid := strings.TrimSpace(c.GetString("agentUid")) - keyDataJSON := new(KeyDataJSON) - //判断是否有商户还绑定了该代理 - if models.IsExistMerchantByAgentUid(agentUid) { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "已有商户绑定改代理,不能删除" - } else { - if models.DeleteAgentByAgentUid(agentUid) { - keyDataJSON.Code = 200 - } else { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "删除失败" - } - } + se := new(service.DeleteService) + keyDataJSON := se.DeleteAgent(agentUid) c.GenerateJSON(keyDataJSON) } -func (c *Deletecontroller) DeleteAgentRelation() { +func (c *DeleteController) DeleteAgentRelation() { + merchantUid := strings.TrimSpace(c.GetString("merchantUid")) - merchantInfo := models.GetMerchantByUid(merchantUid) + se := new(service.DeleteService) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = 200 + keyDataJSON := se.DeleteAgentRelation(merchantUid) - if merchantInfo.MerchantUid == "" { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "不存在这样的商户" - } else { - merchantInfo.UpdateTime = utils.GetBasicDateTime() - merchantInfo.BelongAgentUid = "" - merchantInfo.BelongAgentName = "" - - if !models.UpdateMerchant(merchantInfo) { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "更新商户失败" - } - } - - c.GenerateJSON(merchantInfo) + c.GenerateJSON(keyDataJSON) } diff --git a/boss/controllers/filterController.go b/boss/controllers/filterController.go index 650daa9..1b5be80 100644 --- a/boss/controllers/filterController.go +++ b/boss/controllers/filterController.go @@ -11,29 +11,11 @@ package controllers import ( "fmt" - beego "github.com/beego/beego/v2/server/web" - "github.com/beego/beego/v2/server/web/context" - "strings" + "github.com/beego/beego/v2/server/web" ) type FilterController struct { - beego.Controller -} - -var FilterLogin = func(ctx *context.Context) { - userID, ok := ctx.Input.Session("userID").(string) - if !ok || userID == "" { - if !strings.Contains(ctx.Request.RequestURI, "/login.html") && - !strings.Contains(ctx.Request.RequestURI, "/getVerifyImg") && - !strings.Contains(ctx.Request.RequestURI, "/favicon.ico") && - !ctx.Input.IsAjax() { - ctx.Redirect(302, "/login.html") - } - } else { - if strings.Contains(ctx.Request.RequestURI, "/login.html") { - ctx.Redirect(302, "/") - } - } + web.Controller } //jsonp请求过来的函数 @@ -48,9 +30,9 @@ func (c *FilterController) Filter() { dataJSON.Code = 404 } else { dataJSON.Code = 200 - c.SetSession("userID", userID) + _ = c.SetSession("userID", userID) } fmt.Println(dataJSON) c.Data["json"] = dataJSON - c.ServeJSON() + _ = c.ServeJSON() } diff --git a/boss/controllers/getController.go b/boss/controllers/getController.go index f66376d..149fa6a 100644 --- a/boss/controllers/getController.go +++ b/boss/controllers/getController.go @@ -11,8 +11,16 @@ package controllers import ( "boss/common" - "boss/models" - controller "boss/supplier" + "boss/datas" + "boss/models/accounts" + "boss/models/agent" + "boss/models/merchant" + "boss/models/notify" + "boss/models/order" + "boss/models/payfor" + "boss/models/road" + "boss/models/system" + "boss/models/user" "fmt" "sort" "strconv" @@ -70,24 +78,24 @@ func (c *GetController) GetMenu() { params := make(map[string]string) params["first_menu__icontains"] = firstMenuSearch - c.GetCutPage(models.GetMenuLenByMap(params)) + c.GetCutPage(system.GetMenuLenByMap(params)) - menuDataJSON := new(MenuDataJSON) + menuDataJSON := new(datas.MenuDataJSON) menuDataJSON.DisplayCount = c.DisplayCount menuDataJSON.CurrentPage = c.CurrentPage menuDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { menuDataJSON.Code = -1 - menuDataJSON.MenuList = make([]models.MenuInfo, 0) + menuDataJSON.MenuList = make([]system.MenuInfo, 0) c.GenerateJSON(menuDataJSON) return } - menuInfoList := models.GetMenuOffsetByMap(params, c.DisplayCount, c.Offset) - sort.Sort(models.MenuInfoSlice(menuInfoList)) + menuInfoList := system.GetMenuOffsetByMap(params, c.DisplayCount, c.Offset) + sort.Sort(system.MenuInfoSlice(menuInfoList)) for i, m := range menuInfoList { - secondMenuInfoList := models.GetSecondMenuListByFirstMenuUid(m.MenuUid) + secondMenuInfoList := system.GetSecondMenuListByFirstMenuUid(m.MenuUid) smenus := "" for j := 0; j < len(secondMenuInfoList); j++ { smenus += secondMenuInfoList[j].SecondMenu @@ -110,15 +118,15 @@ func (c *GetController) GetMenu() { } func (c *GetController) GetFirstMenu() { - menuDataJSON := new(MenuDataJSON) - menuList := models.GetMenuAll() + menuDataJSON := new(datas.MenuDataJSON) + menuList := system.GetMenuAll() if len(menuList) == 0 { menuDataJSON.Code = -1 } else { menuDataJSON.Code = 200 } - sort.Sort(models.MenuInfoSlice(menuList)) + sort.Sort(system.MenuInfoSlice(menuList)) menuDataJSON.MenuList = menuList c.GenerateJSON(menuDataJSON) } @@ -134,11 +142,11 @@ func (c *GetController) GetSecondMenu() { params := make(map[string]string) params["first_menu__icontains"] = firstMenuSearch params["second_menu__icontains"] = secondMenuSearch - l := models.GetSecondMenuLenByMap(params) + l := system.GetSecondMenuLenByMap(params) c.GetCutPage(l) - secondMenuDataJSON := new(SecondMenuDataJSON) + secondMenuDataJSON := new(datas.SecondMenuDataJSON) secondMenuDataJSON.DisplayCount = c.DisplayCount secondMenuDataJSON.Code = 200 @@ -146,13 +154,13 @@ func (c *GetController) GetSecondMenu() { secondMenuDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - secondMenuDataJSON.SecondMenuList = make([]models.SecondMenuInfo, 0) + secondMenuDataJSON.SecondMenuList = make([]system.SecondMenuInfo, 0) c.GenerateJSON(secondMenuDataJSON) return } - secondMenuList := models.GetSecondMenuByMap(params, c.DisplayCount, c.Offset) - sort.Sort(models.SecondMenuSlice(secondMenuList)) + secondMenuList := system.GetSecondMenuByMap(params, c.DisplayCount, c.Offset) + sort.Sort(system.SecondMenuSlice(secondMenuList)) secondMenuDataJSON.SecondMenuList = secondMenuList secondMenuDataJSON.StartIndex = c.Offset @@ -166,9 +174,9 @@ func (c *GetController) GetSecondMenu() { func (c *GetController) GetSecondMenus() { firstMenuUid := strings.TrimSpace(c.GetString("firMenuUid")) - secondMenuDataJSON := new(SecondMenuDataJSON) + secondMenuDataJSON := new(datas.SecondMenuDataJSON) - secondMenuList := models.GetSecondMenuListByFirstMenuUid(firstMenuUid) + secondMenuList := system.GetSecondMenuListByFirstMenuUid(firstMenuUid) secondMenuDataJSON.Code = 200 secondMenuDataJSON.SecondMenuList = secondMenuList @@ -178,18 +186,18 @@ func (c *GetController) GetSecondMenus() { func (c *GetController) GetOneMenu() { menuUid := c.GetString("menuUid") - dataJSON := new(MenuDataJSON) - menuInfo := models.GetMenuInfoByMenuUid(menuUid) + dataJSON := new(datas.MenuDataJSON) + menuInfo := system.GetMenuInfoByMenuUid(menuUid) if menuInfo.MenuUid == "" { dataJSON.Code = -1 dataJSON.Msg = "该菜单项不存在" } else { - dataJSON.MenuList = make([]models.MenuInfo, 0) + dataJSON.MenuList = make([]system.MenuInfo, 0) dataJSON.MenuList = append(dataJSON.MenuList, menuInfo) dataJSON.Code = 200 } c.Data["json"] = dataJSON - c.ServeJSONP() + _ = c.ServeJSONP() } func (c *GetController) GetPowerItem() { @@ -200,25 +208,25 @@ func (c *GetController) GetPowerItem() { params["power_uid__icontains"] = powerID params["power_item_icontains"] = powerItem - l := models.GetPowerItemLenByMap(params) + l := system.GetPowerItemLenByMap(params) c.GetCutPage(l) - powerItemDataJSON := new(PowerItemDataJSON) + powerItemDataJSON := new(datas.PowerItemDataJSON) powerItemDataJSON.DisplayCount = c.DisplayCount powerItemDataJSON.Code = 200 powerItemDataJSON.CurrentPage = c.CurrentPage powerItemDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - powerItemDataJSON.PowerItemList = make([]models.PowerInfo, 0) + powerItemDataJSON.PowerItemList = make([]system.PowerInfo, 0) c.GenerateJSON(powerItemDataJSON) return } powerItemDataJSON.StartIndex = c.Offset - powerItemList := models.GetPowerItemByMap(params, c.DisplayCount, c.Offset) - sort.Sort(models.PowerInfoSlice(powerItemList)) + powerItemList := system.GetPowerItemByMap(params, c.DisplayCount, c.Offset) + sort.Sort(system.PowerInfoSlice(powerItemList)) powerItemDataJSON.PowerItemList = powerItemList c.GenerateJSON(powerItemDataJSON) @@ -230,29 +238,29 @@ func (c *GetController) GetRole() { params := make(map[string]string) params["role_name__icontains"] = roleName - l := models.GetRoleLenByMap(params) + l := system.GetRoleLenByMap(params) c.GetCutPage(l) - roleInfoDataJSON := new(RoleInfoDataJSON) + roleInfoDataJSON := new(datas.RoleInfoDataJSON) roleInfoDataJSON.DisplayCount = c.DisplayCount roleInfoDataJSON.Code = 200 roleInfoDataJSON.CurrentPage = c.CurrentPage roleInfoDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - roleInfoDataJSON.RoleInfoList = make([]models.RoleInfo, 0) + roleInfoDataJSON.RoleInfoList = make([]system.RoleInfo, 0) c.GenerateJSON(roleInfoDataJSON) return } roleInfoDataJSON.StartIndex = c.Offset - roleInfoDataJSON.RoleInfoList = models.GetRoleByMap(params, c.DisplayCount, c.Offset) + roleInfoDataJSON.RoleInfoList = system.GetRoleByMap(params, c.DisplayCount, c.Offset) c.GenerateJSON(roleInfoDataJSON) } func (c *GetController) GetAllRole() { - roleInfoDataJSON := new(RoleInfoDataJSON) - roleInfoList := models.GetRole() + roleInfoDataJSON := new(datas.RoleInfoDataJSON) + roleInfoList := system.GetRole() fmt.Println(roleInfoList) if len(roleInfoList) == 0 { roleInfoDataJSON.Code = -1 @@ -265,15 +273,15 @@ func (c *GetController) GetAllRole() { func (c *GetController) GetDeployTree() { roleUid := strings.TrimSpace(c.GetString("roleUid")) - roleInfo := models.GetRoleByRoleUid(roleUid) + roleInfo := system.GetRoleByRoleUid(roleUid) - allFirstMenu := models.GetMenuAll() - sort.Sort(models.MenuInfoSlice(allFirstMenu)) - allSecondMenu := models.GetSecondMenuList() - sort.Sort(models.SecondMenuSlice(allSecondMenu)) - allPower := models.GetPower() + allFirstMenu := system.GetMenuAll() + sort.Sort(system.MenuInfoSlice(allFirstMenu)) + allSecondMenu := system.GetSecondMenuList() + sort.Sort(system.SecondMenuSlice(allSecondMenu)) + allPower := system.GetPower() - deployTreeJSON := new(DeployTreeJSON) + deployTreeJSON := new(datas.DeployTreeJSON) deployTreeJSON.Code = 200 deployTreeJSON.AllFirstMenu = allFirstMenu deployTreeJSON.AllSecondMenu = allSecondMenu @@ -303,32 +311,32 @@ func (c *GetController) GetOperator() { params := make(map[string]string) params["user_id__icontains"] = operatorName - l := models.GetOperatorLenByMap(params) + l := user.GetOperatorLenByMap(params) c.GetCutPage(l) - operatorDataJSON := new(OperatorDataJSON) + operatorDataJSON := new(datas.OperatorDataJSON) operatorDataJSON.DisplayCount = c.DisplayCount operatorDataJSON.Code = 200 operatorDataJSON.CurrentPage = c.CurrentPage operatorDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - operatorDataJSON.OperatorList = make([]models.UserInfo, 0) + operatorDataJSON.OperatorList = make([]user.UserInfo, 0) c.GenerateJSON(operatorDataJSON) return } operatorDataJSON.StartIndex = c.Offset - operatorDataJSON.OperatorList = models.GetOperatorByMap(params, c.DisplayCount, c.Offset) + operatorDataJSON.OperatorList = user.GetOperatorByMap(params, c.DisplayCount, c.Offset) c.GenerateJSON(operatorDataJSON) } func (c *GetController) GetOneOperator() { userId := strings.TrimSpace(c.GetString("userId")) - userInfo := models.GetUserInfoByUserID(userId) + userInfo := user.GetUserInfoByUserID(userId) - operatorDataJSON := new(OperatorDataJSON) - operatorDataJSON.OperatorList = make([]models.UserInfo, 0) + operatorDataJSON := new(datas.OperatorDataJSON) + operatorDataJSON.OperatorList = make([]user.UserInfo, 0) operatorDataJSON.OperatorList = append(operatorDataJSON.OperatorList, userInfo) operatorDataJSON.Code = 200 @@ -339,11 +347,11 @@ func (c *GetController) GetOneOperator() { func (c *GetController) GetEditOperator() { userId := strings.TrimSpace(c.GetString("userId")) - editOperatorDataJSON := new(EditOperatorDataJSON) - userInfo := models.GetUserInfoByUserID(userId) + editOperatorDataJSON := new(datas.EditOperatorDataJSON) + userInfo := user.GetUserInfoByUserID(userId) fmt.Println(userInfo) editOperatorDataJSON.OperatorList = append(editOperatorDataJSON.OperatorList, userInfo) - editOperatorDataJSON.RoleList = models.GetRole() + editOperatorDataJSON.RoleList = system.GetRole() editOperatorDataJSON.Code = 200 c.GenerateJSON(editOperatorDataJSON) @@ -354,31 +362,31 @@ func (c *GetController) GetBankCard() { params := make(map[string]string) params["account_name__icontains"] = accountNameSearch - l := models.GetBankCardLenByMap(params) + l := system.GetBankCardLenByMap(params) c.GetCutPage(l) - bankCardDataJSON := new(BankCardDataJSON) + bankCardDataJSON := new(datas.BankCardDataJSON) bankCardDataJSON.DisplayCount = c.DisplayCount bankCardDataJSON.Code = 200 bankCardDataJSON.CurrentPage = c.CurrentPage bankCardDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - bankCardDataJSON.BankCardInfoList = make([]models.BankCardInfo, 0) + bankCardDataJSON.BankCardInfoList = make([]system.BankCardInfo, 0) c.GenerateJSON(bankCardDataJSON) return } bankCardDataJSON.StartIndex = c.Offset - bankCardDataJSON.BankCardInfoList = models.GetBankCardByMap(params, c.DisplayCount, c.Offset) + bankCardDataJSON.BankCardInfoList = system.GetBankCardByMap(params, c.DisplayCount, c.Offset) c.GenerateJSON(bankCardDataJSON) } func (c *GetController) GetOneBankCard() { uid := strings.TrimSpace(c.GetString("uid")) - bankCardInfo := models.GetBankCardByUid(uid) + bankCardInfo := system.GetBankCardByUid(uid) - bankCardDataJSON := new(BankCardDataJSON) + bankCardDataJSON := new(datas.BankCardDataJSON) bankCardDataJSON.Code = -1 if bankCardInfo.Uid != "" { @@ -405,24 +413,24 @@ func (c *GetController) GetRoad() { params["road_uid"] = roadUid params["pay_type"] = payType - l := models.GetRoadLenByMap(params) + l := road.GetRoadLenByMap(params) c.GetCutPage(l) - roadDataJSON := new(RoadDataJSON) + roadDataJSON := new(datas.RoadDataJSON) roadDataJSON.DisplayCount = c.DisplayCount roadDataJSON.Code = 200 roadDataJSON.CurrentPage = c.CurrentPage roadDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - roadDataJSON.RoadInfoList = make([]models.RoadInfo, 0) + roadDataJSON.RoadInfoList = make([]road.RoadInfo, 0) c.GenerateJSON(roadDataJSON) return } roadDataJSON.StartIndex = c.Offset - roadDataJSON.RoadInfoList = models.GetRoadInfoByMap(params, c.DisplayCount, c.Offset) - roadDataJSON.RoadPool = models.GetRoadPoolByRoadPoolCode(roadPoolCode) + roadDataJSON.RoadInfoList = road.GetRoadInfoByMap(params, c.DisplayCount, c.Offset) + roadDataJSON.RoadPool = road.GetRoadPoolByRoadPoolCode(roadPoolCode) c.GenerateJSON(roadDataJSON) } @@ -431,8 +439,8 @@ func (c *GetController) GetAllRoad() { params := make(map[string]string) params["road_name__icontains"] = roadName - roadDataJSON := new(RoadDataJSON) - roadInfoList := models.GetAllRoad(params) + roadDataJSON := new(datas.RoadDataJSON) + roadInfoList := road.GetAllRoad(params) roadDataJSON.Code = 200 roadDataJSON.RoadInfoList = roadInfoList @@ -445,15 +453,15 @@ func (c *GetController) GetAllRoad() { func (c *GetController) GetOneRoad() { roadUid := strings.TrimSpace(c.GetString("roadUid")) - roadInfo := models.GetRoadInfoByRoadUid(roadUid) - roadDataJSON := new(RoadDataJSON) + roadInfo := road.GetRoadInfoByRoadUid(roadUid) + roadDataJSON := new(datas.RoadDataJSON) roadDataJSON.Code = -1 if roadInfo.RoadUid != "" { roadDataJSON.RoadInfoList = append(roadDataJSON.RoadInfoList, roadInfo) roadDataJSON.Code = 200 } else { - roadDataJSON.RoadInfoList = make([]models.RoadInfo, 0) + roadDataJSON.RoadInfoList = make([]road.RoadInfo, 0) } c.GenerateJSON(roadDataJSON) @@ -467,23 +475,23 @@ func (c *GetController) GetRoadPool() { params["road_pool_name__icontains"] = roadPoolName params["road_pool_code__icontains"] = roadPoolCode - l := models.GetRoadPoolLenByMap(params) + l := road.GetRoadPoolLenByMap(params) c.GetCutPage(l) - roadPoolDataJSON := new(RoadPoolDataJSON) + roadPoolDataJSON := new(datas.RoadPoolDataJSON) roadPoolDataJSON.DisplayCount = c.DisplayCount roadPoolDataJSON.Code = 200 roadPoolDataJSON.CurrentPage = c.CurrentPage roadPoolDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - roadPoolDataJSON.RoadPoolInfoList = make([]models.RoadPoolInfo, 0) + roadPoolDataJSON.RoadPoolInfoList = make([]road.RoadPoolInfo, 0) c.GenerateJSON(roadPoolDataJSON) return } roadPoolDataJSON.StartIndex = c.Offset - roadPoolDataJSON.RoadPoolInfoList = models.GetRoadPoolByMap(params, c.DisplayCount, c.Offset) + roadPoolDataJSON.RoadPoolInfoList = road.GetRoadPoolByMap(params, c.DisplayCount, c.Offset) c.GenerateJSON(roadPoolDataJSON) } @@ -492,9 +500,9 @@ func (c *GetController) GetAllRollPool() { params := make(map[string]string) params["road_pool_name__icontains"] = rollPoolName - roadPoolDataJSON := new(RoadPoolDataJSON) + roadPoolDataJSON := new(datas.RoadPoolDataJSON) roadPoolDataJSON.Code = 200 - roadPoolDataJSON.RoadPoolInfoList = models.GetAllRollPool(params) + roadPoolDataJSON.RoadPoolInfoList = road.GetAllRollPool(params) c.GenerateJSON(roadPoolDataJSON) } @@ -506,36 +514,36 @@ func (c *GetController) GetMerchant() { params["merchant_name__icontains"] = merchantName params["merchant_uid__icontains"] = merchantNo - l := models.GetMerchantLenByMap(params) + l := merchant.GetMerchantLenByMap(params) c.GetCutPage(l) - merchantDataJSON := new(MerchantDataJSON) + merchantDataJSON := new(datas.MerchantDataJSON) merchantDataJSON.DisplayCount = c.DisplayCount merchantDataJSON.Code = 200 merchantDataJSON.CurrentPage = c.CurrentPage merchantDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - merchantDataJSON.MerchantList = make([]models.MerchantInfo, 0) + merchantDataJSON.MerchantList = make([]merchant.MerchantInfo, 0) c.GenerateJSON(merchantDataJSON) return } merchantDataJSON.StartIndex = c.Offset - merchantDataJSON.MerchantList = models.GetMerchantListByMap(params, c.DisplayCount, c.Offset) + merchantDataJSON.MerchantList = merchant.GetMerchantListByMap(params, c.DisplayCount, c.Offset) c.GenerateJSON(merchantDataJSON) } func (c *GetController) GetAllMerchant() { - merchantDataJSON := new(MerchantDataJSON) + merchantDataJSON := new(datas.MerchantDataJSON) merchantDataJSON.Code = 200 - merchantDataJSON.MerchantList = models.GetAllMerchant() + merchantDataJSON.MerchantList = merchant.GetAllMerchant() c.GenerateJSON(merchantDataJSON) } func (c *GetController) GetOneMerchant() { merchantUid := strings.TrimSpace(c.GetString("merchantUid")) - merchantDataJSON := new(MerchantDataJSON) + merchantDataJSON := new(datas.MerchantDataJSON) if merchantUid == "" { merchantDataJSON.Code = -1 @@ -543,7 +551,7 @@ func (c *GetController) GetOneMerchant() { return } - merchantInfo := models.GetMerchantByUid(merchantUid) + merchantInfo := merchant.GetMerchantByUid(merchantUid) merchantDataJSON.Code = 200 merchantDataJSON.MerchantList = append(merchantDataJSON.MerchantList, merchantInfo) @@ -554,9 +562,9 @@ func (c *GetController) GetOneMerchantDeploy() { merchantNo := strings.TrimSpace(c.GetString("merchantNo")) payType := strings.TrimSpace(c.GetString("payType")) - merchantDeployDataJSON := new(MerchantDeployDataJSON) + merchantDeployDataJSON := new(datas.MerchantDeployDataJSON) - merchantDeployInfo := models.GetMerchantDeployByUidAndPayType(merchantNo, payType) + merchantDeployInfo := merchant.GetMerchantDeployByUidAndPayType(merchantNo, payType) if merchantDeployInfo.Status == "active" { merchantDeployDataJSON.Code = 200 @@ -570,10 +578,10 @@ func (c *GetController) GetOneMerchantDeploy() { } func (c *GetController) GetAllAccount() { - accountDataJSON := new(AccountDataJSON) + accountDataJSON := new(datas.AccountDataJSON) accountDataJSON.Code = 200 - accountDataJSON.AccountList = models.GetAllAccount() + accountDataJSON.AccountList = accounts.GetAllAccount() c.GenerateJSON(accountDataJSON) } @@ -586,23 +594,23 @@ func (c *GetController) GetAccount() { params["account_name__icontains"] = accountName params["account_uid_icontains"] = accountUid - l := models.GetAccountLenByMap(params) + l := accounts.GetAccountLenByMap(params) c.GetCutPage(l) - accountDataJSON := new(AccountDataJSON) + accountDataJSON := new(datas.AccountDataJSON) accountDataJSON.DisplayCount = c.DisplayCount accountDataJSON.Code = 200 accountDataJSON.CurrentPage = c.CurrentPage accountDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - accountDataJSON.AccountList = make([]models.AccountInfo, 0) + accountDataJSON.AccountList = make([]accounts.AccountInfo, 0) c.GenerateJSON(accountDataJSON) return } accountDataJSON.StartIndex = c.Offset - accountDataJSON.AccountList = models.GetAccountByMap(params, c.DisplayCount, c.Offset) + accountDataJSON.AccountList = accounts.GetAccountByMap(params, c.DisplayCount, c.Offset) c.GenerateJSON(accountDataJSON) } @@ -610,9 +618,9 @@ func (c *GetController) GetOneAccount() { //从http的body中获取accountUid字段,并且这个字段是string类型 accountUid := strings.TrimSpace(c.GetString("accountUid")) //new一个accountDataJSON结构体对象,用来做jsonp返回 - accountDataJSON := new(AccountDataJSON) + accountDataJSON := new(datas.AccountDataJSON) //用accountuid作为过滤字段,从数据库中读取一条信息 - accountInfo := models.GetAccountByUid(accountUid) + accountInfo := accounts.GetAccountByUid(accountUid) //code初始值为200 accountDataJSON.Code = 200 //将从数据库读出来的数据插入到accountList数组中 @@ -645,23 +653,23 @@ func (c *GetController) GetAccountHistory() { params["create_time__gte"] = startTime params["create_time__lte"] = endTime - l := models.GetAccountHistoryLenByMap(params) + l := accounts.GetAccountHistoryLenByMap(params) c.GetCutPage(l) - accountHistoryDataJSON := new(AccountHistoryDataJSON) + accountHistoryDataJSON := new(datas.AccountHistoryDataJSON) accountHistoryDataJSON.DisplayCount = c.DisplayCount accountHistoryDataJSON.Code = 200 accountHistoryDataJSON.CurrentPage = c.CurrentPage accountHistoryDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - accountHistoryDataJSON.AccountHistoryList = make([]models.AccountHistoryInfo, 0) + accountHistoryDataJSON.AccountHistoryList = make([]accounts.AccountHistoryInfo, 0) c.GenerateJSON(accountHistoryDataJSON) return } accountHistoryDataJSON.StartIndex = c.Offset - accountHistoryDataJSON.AccountHistoryList = models.GetAccountHistoryByMap(params, c.DisplayCount, c.Offset) + accountHistoryDataJSON.AccountHistoryList = accounts.GetAccountHistoryByMap(params, c.DisplayCount, c.Offset) c.GenerateJSON(accountHistoryDataJSON) } @@ -670,23 +678,23 @@ func (c *GetController) GetAgent() { params := make(map[string]string) params["agnet_name__icontains"] = agentName - l := models.GetAgentInfoLenByMap(params) + l := agent.GetAgentInfoLenByMap(params) c.GetCutPage(l) - agentDataJSON := new(AgentDataJSON) + agentDataJSON := new(datas.AgentDataJSON) agentDataJSON.DisplayCount = c.DisplayCount agentDataJSON.Code = 200 agentDataJSON.CurrentPage = c.CurrentPage agentDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - agentDataJSON.AgentList = make([]models.AgentInfo, 0) + agentDataJSON.AgentList = make([]agent.AgentInfo, 0) c.GenerateJSON(agentDataJSON) return } agentDataJSON.StartIndex = c.Offset - agentDataJSON.AgentList = models.GetAgentInfoByMap(params, c.DisplayCount, c.Offset) + agentDataJSON.AgentList = agent.GetAgentInfoByMap(params, c.DisplayCount, c.Offset) c.GenerateJSON(agentDataJSON) } @@ -695,16 +703,16 @@ func (c *GetController) GetAllAgent() { params := make(map[string]string) params["agent_name__icontains"] = agentName - agentDataJSON := new(AgentDataJSON) + agentDataJSON := new(datas.AgentDataJSON) agentDataJSON.Code = 200 - agentDataJSON.AgentList = models.GetAllAgentByMap(params) + agentDataJSON.AgentList = agent.GetAllAgentByMap(params) c.GenerateJSON(agentDataJSON) } func (c *GetController) GetProduct() { supplierCode2Name := common.GetSupplierMap() - productDataJSON := new(ProductDataJSON) + productDataJSON := new(datas.ProductDataJSON) productDataJSON.Code = 200 productDataJSON.ProductMap = supplierCode2Name c.GenerateJSON(productDataJSON) @@ -718,19 +726,19 @@ func (c *GetController) GetAgentToMerchant() { params["belong_agent_uid"] = agentUid params["merchant_uid"] = merchantUid - l := models.GetMerchantLenByParams(params) + l := merchant.GetMerchantLenByParams(params) c.GetCutPage(l) - merchantDataJSON := new(MerchantDataJSON) + merchantDataJSON := new(datas.MerchantDataJSON) merchantDataJSON.DisplayCount = c.DisplayCount merchantDataJSON.Code = 200 merchantDataJSON.CurrentPage = c.CurrentPage merchantDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - merchantDataJSON.MerchantList = make([]models.MerchantInfo, 0) + merchantDataJSON.MerchantList = make([]merchant.MerchantInfo, 0) } else { - merchantDataJSON.MerchantList = models.GetMerchantByParams(params, c.DisplayCount, c.Offset) + merchantDataJSON.MerchantList = merchant.GetMerchantByParams(params, c.DisplayCount, c.Offset) } c.GenerateJSON(merchantDataJSON) @@ -768,36 +776,37 @@ func (c *GetController) GetOrder() { params["refund"] = "yes" } - l := models.GetOrderLenByMap(params) + l := order.GetOrderLenByMap(params) c.GetCutPage(l) - orderDataJSON := new(OrderDataJSON) + orderDataJSON := new(datas.OrderDataJSON) orderDataJSON.DisplayCount = c.DisplayCount orderDataJSON.Code = 200 orderDataJSON.CurrentPage = c.CurrentPage orderDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - orderDataJSON.OrderList = make([]models.OrderInfo, 0) + orderDataJSON.OrderList = make([]order.OrderInfo, 0) c.GenerateJSON(orderDataJSON) return } orderDataJSON.StartIndex = c.Offset - orderDataJSON.OrderList = models.GetOrderByMap(params, c.DisplayCount, c.Offset) - orderDataJSON.SuccessRate = models.GetSuccessRateByMap(params) - orderDataJSON.AllAmount = models.GetAllAmountByMap(params) + orderDataJSON.OrderList = order.GetOrderByMap(params, c.DisplayCount, c.Offset) + orderDataJSON.SuccessRate = order.GetSuccessRateByMap(params) + params["status"] = common.SUCCESS + orderDataJSON.AllAmount = order.GetAllAmountByMap(params) c.GenerateJSON(orderDataJSON) } func (c *GetController) GetOneOrder() { bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) - orderDataJSON := new(OrderDataJSON) - orderInfo := models.GetOneOrder(bankOrderId) + orderDataJSON := new(datas.OrderDataJSON) + orderInfo := order.GetOneOrder(bankOrderId) orderDataJSON.Code = 200 orderDataJSON.OrderList = append(orderDataJSON.OrderList, orderInfo) - notifyInfo := models.GetNotifyInfoByBankOrderId(bankOrderId) + notifyInfo := notify.GetNotifyInfoByBankOrderId(bankOrderId) if notifyInfo.Url == "" || len(notifyInfo.Url) == 0 { orderDataJSON.NotifyUrl = orderInfo.NotifyUrl } else { @@ -826,23 +835,23 @@ func (c *GetController) GetOrderProfit() { params["pay_product_code"] = supplierUid params["pay_type_code"] = payWayCode - l := models.GetOrderProfitLenByMap(params) + l := order.GetOrderProfitLenByMap(params) c.GetCutPage(l) - listDataJSON := new(ListDataJSON) + listDataJSON := new(datas.ListDataJSON) listDataJSON.DisplayCount = c.DisplayCount listDataJSON.Code = 200 listDataJSON.CurrentPage = c.CurrentPage listDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - listDataJSON.List = make([]models.OrderProfitInfo, 0) + listDataJSON.List = make([]order.OrderProfitInfo, 0) c.GenerateJSON(listDataJSON) return } listDataJSON.StartIndex = c.Offset - listDataJSON.List = models.GetOrderProfitByMap(params, c.DisplayCount, c.Offset) + listDataJSON.List = order.GetOrderProfitByMap(params, c.DisplayCount, c.Offset) supplierAll := 0.0 platformAll := 0.0 agentAll := 0.0 @@ -878,23 +887,23 @@ func (c *GetController) GetPayFor() { params["bank_order_id"] = bankOrderId params["status"] = status - l := models.GetPayForLenByMap(params) + l := payfor.GetPayForLenByMap(params) c.GetCutPage(l) - listDataJSON := new(PayForDataJSON) + listDataJSON := new(datas.PayForDataJSON) listDataJSON.DisplayCount = c.DisplayCount listDataJSON.Code = 200 listDataJSON.CurrentPage = c.CurrentPage listDataJSON.TotalPage = c.TotalPage if c.Offset < 0 { - listDataJSON.PayForList = make([]models.PayforInfo, 0) + listDataJSON.PayForList = make([]payfor.PayforInfo, 0) c.GenerateJSON(listDataJSON) return } listDataJSON.StartIndex = c.Offset - listDataJSON.PayForList = models.GetPayForByMap(params, c.DisplayCount, c.Offset) + listDataJSON.PayForList = payfor.GetPayForByMap(params, c.DisplayCount, c.Offset) for index, p := range listDataJSON.PayForList { if p.MerchantName == "" { listDataJSON.PayForList[index].MerchantName = "任意下发" @@ -912,9 +921,9 @@ func (c *GetController) GetPayFor() { func (c *GetController) GetOnePayFor() { bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) - payForInfo := models.GetPayForByBankOrderId(bankOrderId) + payForInfo := payfor.GetPayForByBankOrderId(bankOrderId) - listDataJSON := new(PayForDataJSON) + listDataJSON := new(datas.PayForDataJSON) listDataJSON.Code = 200 listDataJSON.PayForList = append(listDataJSON.PayForList, payForInfo) @@ -922,27 +931,29 @@ func (c *GetController) GetOnePayFor() { } func (c *GetController) GetBalance() { - roadName := strings.TrimSpace(c.GetString("roadName")) - roadUid := strings.TrimSpace(c.GetString("roadUid")) + /*roadName := strings.TrimSpace(c.GetString("roadName")) + roadUid := strings.TrimSpace(c.GetString("roadUid"))*/ - var roadInfo models.RoadInfo + /*var roadInfo road.RoadInfo if roadUid != "" { - roadInfo = models.GetRoadInfoByRoadUid(roadUid) + roadInfo = road.GetRoadInfoByRoadUid(roadUid) } else { - roadInfo = models.GetRoadInfoByName(roadName) - } + roadInfo = road.GetRoadInfoByName(roadName) + }*/ - balanceDataJSON := new(BalanceDataJSON) + balanceDataJSON := new(datas.BalanceDataJSON) balanceDataJSON.Code = 200 - supplier := controller.GetPaySupplierByCode(roadInfo.ProductUid) + /*supplier := controller.GetPaySupplierByCode(roadInfo.ProductUid) if supplier == nil { balanceDataJSON.Code = -1 balanceDataJSON.Balance = -1.00 } else { balance := supplier.BalanceQuery(roadInfo) balanceDataJSON.Balance = balance - } + }*/ + // TODO 从gateway获取账户余额 + balanceDataJSON.Balance = 1 c.GenerateJSON(balanceDataJSON) } @@ -959,9 +970,9 @@ func (c *GetController) GetNotifyBankOrderIdList() { params["merchant_uid"] = merchantUid params["type"] = notifyType - bankOrderIdListJSON := new(NotifyBankOrderIdListJSON) + bankOrderIdListJSON := new(datas.NotifyBankOrderIdListJSON) bankOrderIdListJSON.Code = 200 - bankOrderIdListJSON.NotifyIdList = models.GetNotifyBankOrderIdListByParams(params) + bankOrderIdListJSON.NotifyIdList = notify.GetNotifyBankOrderIdListByParams(params) c.GenerateJSON(bankOrderIdListJSON) } @@ -984,9 +995,9 @@ func (c *GetController) GetProfit() { params["create_time__gte"] = startTime params["create_time__lte"] = endTime - profitListJSON := new(ProfitListJSON) + profitListJSON := new(datas.ProfitListJSON) profitListJSON.Code = 200 - profitListJSON.ProfitList = models.GetPlatformProfitByMap(params) + profitListJSON.ProfitList = order.GetPlatformProfitByMap(params) profitListJSON.TotalAmount = 0.00 profitListJSON.PlatformTotalProfit = 0.00 diff --git a/boss/controllers/loginController.go b/boss/controllers/loginController.go index 01f2bd7..8c13a32 100644 --- a/boss/controllers/loginController.go +++ b/boss/controllers/loginController.go @@ -2,7 +2,8 @@ package controllers import ( "boss/common" - "boss/models" + "boss/datas" + "boss/models/user" "boss/utils" "github.com/beego/beego/v2/adapter/validation" "github.com/beego/beego/v2/core/logs" @@ -23,7 +24,7 @@ func (c *LoginController) Login() { passWD := c.GetString("passwd") code := c.GetString("Code") - dataJSON := new(KeyDataJSON) + dataJSON := new(datas.KeyDataJSON) valid := validation.Validation{} @@ -38,7 +39,7 @@ func (c *LoginController) Login() { dataJSON.Msg = "验证码不正确!" } - userInfo := models.GetUserInfoByUserID(userID) + userInfo := user.GetUserInfoByUserID(userID) if userInfo.UserId == "" { dataJSON.Key = "userID" @@ -54,8 +55,8 @@ func (c *LoginController) Login() { } else if code != codeInterface.(string) { dataJSON.Key = "code" dataJSON.Msg = "验证码不正确!" - } else if userInfo.Status == "unactive" { - dataJSON.Key = "unactive" + } else if userInfo.Status == common.UNACTIVE { + dataJSON.Key = common.UNACTIVE dataJSON.Msg = "用户已被冻结!" } else if userInfo.Status == "del" { dataJSON.Key = "del" @@ -65,16 +66,16 @@ func (c *LoginController) Login() { go func() { userInfo.Ip = c.Ctx.Input.IP() - models.UpdateUserInfoIP(userInfo) + user.UpdateUserInfoIP(userInfo) }() if dataJSON.Key == "" { - c.SetSession("userID", userID) - c.DelSession("verifyCode") + _ = c.SetSession("userID", userID) + _ = c.DelSession("verifyCode") } c.Data["json"] = dataJSON - c.ServeJSON() + _ = c.ServeJSON() } /* @@ -82,13 +83,13 @@ func (c *LoginController) Login() { */ func (c *LoginController) Logout() { - dataJSON := new(BaseDataJSON) + dataJSON := new(datas.BaseDataJSON) - c.DelSession("userID") + _ = c.DelSession("userID") dataJSON.Code = 200 c.Data["json"] = dataJSON - c.ServeJSON() + _ = c.ServeJSON() } /* @@ -99,8 +100,12 @@ func (c *LoginController) GetVerifyImg() { if Image == nil || len(verifyCode) != common.VERIFY_CODE_LEN { logs.Error("获取验证码图片失败!") } else { - c.SetSession("verifyCode", verifyCode) + _ = c.SetSession("verifyCode", verifyCode) } logs.Info("验证码:", verifyCode) - Image.WriteTo(c.Ctx.ResponseWriter) + if Image == nil { + logs.Error("生成验证码失败!") + } else { + _, _ = Image.WriteTo(c.Ctx.ResponseWriter) + } } diff --git a/boss/controllers/pageController.go b/boss/controllers/pageController.go index 0f2a4b0..78bca61 100644 --- a/boss/controllers/pageController.go +++ b/boss/controllers/pageController.go @@ -10,7 +10,6 @@ package controllers import ( - "fmt" beego "github.com/beego/beego/v2/server/web" ) @@ -19,7 +18,6 @@ type PageController struct { } func (c *PageController) Index() { - fmt.Println("dlfjldkjfldjfljljljlj") c.TplName = "index.html" } diff --git a/boss/controllers/queryController.go b/boss/controllers/queryController.go index 096ec02..17a157c 100644 --- a/boss/controllers/queryController.go +++ b/boss/controllers/queryController.go @@ -10,60 +10,24 @@ package controllers import ( - "boss/common" - "boss/models" - controller "boss/supplier" - "fmt" - "github.com/beego/beego/v2/core/logs" - beego "github.com/beego/beego/v2/server/web" + "boss/service" + "github.com/beego/beego/v2/server/web" "strings" ) type SupplierQuery struct { - beego.Controller -} - -func OrderQuery(bankOrderId string) string { - - orderInfo := models.GetOrderByBankOrderId(bankOrderId) - - if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 { - logs.Error("不存在这样的订单,订单查询结束") - return "不存在这样的订单" - } - - if orderInfo.Status != "" && orderInfo.Status != "wait" { - logs.Error(fmt.Sprintf("该订单=%s,已经处理完毕,", bankOrderId)) - return "该订单已经处理完毕" - } - - supplierCode := orderInfo.PayProductCode - supplier := controller.GetPaySupplierByCode(supplierCode) - - flag := supplier.PayQuery(orderInfo) - if flag { - return "查询完毕,返回正确结果" - } else { - return "订单还在处理中" - } - + web.Controller } func (c *SupplierQuery) SupplierOrderQuery() { bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) - exist := models.BankOrderIdIsEixst(bankOrderId) - keyDataJSON := new(KeyDataJSON) - if !exist { - keyDataJSON.Msg = "该订单不存在" - } + se := new(service.QueryService) + keyDataJSON := se.SupplierOrderQuery(bankOrderId) - msg := OrderQuery(bankOrderId) - - keyDataJSON.Msg = msg c.Data["json"] = keyDataJSON - c.ServeJSON() + _ = c.ServeJSON() } /* @@ -72,31 +36,9 @@ func (c *SupplierQuery) SupplierOrderQuery() { func (c *SupplierQuery) SupplierPayForQuery() { bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = 200 - - if bankOrderId == "" { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "不存在这样的代付订单" - } else { - payFor := models.GetPayForByBankOrderId(bankOrderId) - if payFor.RoadUid == "" { - keyDataJSON.Msg = "该代付订单没有对应的通道uid" - } else { - roadInfo := models.GetRoadInfoByRoadUid(payFor.RoadUid) - supplier := controller.GetPaySupplierByCode(roadInfo.ProductUid) - result, msg := supplier.PayForQuery(payFor) - keyDataJSON.Msg = msg - if result == common.PAYFOR_SUCCESS { - controller.PayForSuccess(payFor) - } else if result == common.PAYFOR_FAIL { - controller.PayForFail(payFor) - } else { - logs.Info("银行处理中") - } - } - } + se := new(service.QueryService) + keyDataJSON := se.SupplierPayForQuery(bankOrderId) c.Data["json"] = keyDataJSON - c.ServeJSON() + _ = c.ServeJSON() } diff --git a/boss/controllers/sendNotifyMerchant.go b/boss/controllers/sendNotifyMerchant.go deleted file mode 100644 index a8c2bbf..0000000 --- a/boss/controllers/sendNotifyMerchant.go +++ /dev/null @@ -1,75 +0,0 @@ -/*************************************************** - ** @Desc : This file for ... - ** @Time : 2019/12/8 22:15 - ** @Author : yuebin - ** @File : send_notify_merchant - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/12/8 22:15 - ** @Software: GoLand -****************************************************/ -package controllers - -import ( - "boss/common" - "boss/models" - "fmt" - "github.com/beego/beego/v2/client/httplib" - "github.com/beego/beego/v2/core/logs" - beego "github.com/beego/beego/v2/server/web" - "strings" -) - -type SendNotify struct { - beego.Controller -} - -func (c *SendNotify) SendNotifyToMerchant() { - bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) - - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = -1 - orderInfo := models.GetOrderByBankOrderId(bankOrderId) - if orderInfo.Status == common.WAIT { - keyDataJSON.Msg = "该订单不是成功状态,不能回调" - } else { - notifyInfo := models.GetNotifyInfoByBankOrderId(bankOrderId) - notifyUrl := notifyInfo.Url - logs.Info(fmt.Sprintf("boss管理后台手动触发订单回调,url=%s", notifyUrl)) - req := httplib.Post(notifyUrl) - response, err := req.String() - if err != nil { - logs.Error("回调发送失败,fail:", err) - keyDataJSON.Msg = fmt.Sprintf("该订单回调发送失败,订单回调,fail:%s", err) - } else { - if !strings.Contains(strings.ToLower(response), "success") { - keyDataJSON.Msg = fmt.Sprintf("该订单回调发送成功,但是未返回success字段, 商户返回内容=%s", response) - } else { - keyDataJSON.Code = 200 - keyDataJSON.Msg = fmt.Sprintf("该订单回调发送成功") - } - } - } - c.Data["json"] = keyDataJSON - c.ServeJSON() -} - -func (c *SendNotify) SelfSendNotify() { - bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) - - notifyInfo := models.GetNotifyInfoByBankOrderId(bankOrderId) - - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = 200 - - req := httplib.Post(notifyInfo.Url) - - response, err := req.String() - if err != nil { - keyDataJSON.Msg = fmt.Sprintf("订单 bankOrderId=%s,已经发送回调出错:%s", bankOrderId, err) - } else { - keyDataJSON.Msg = fmt.Sprintf("订单 bankOrderId=%s,已经发送回调,商户返回内容:%s", bankOrderId, response) - } - - c.Data["json"] = keyDataJSON - c.ServeJSON() -} diff --git a/boss/controllers/sendNotifyMerchantController.go b/boss/controllers/sendNotifyMerchantController.go new file mode 100644 index 0000000..ec3dea6 --- /dev/null +++ b/boss/controllers/sendNotifyMerchantController.go @@ -0,0 +1,38 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/12/8 22:15 + ** @Author : yuebin + ** @File : send_notify_merchant + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/12/8 22:15 + ** @Software: GoLand +****************************************************/ +package controllers + +import ( + "boss/service" + "github.com/beego/beego/v2/server/web" + "strings" +) + +type SendNotify struct { + web.Controller +} + +func (c *SendNotify) SendNotifyToMerchant() { + bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) + se := new(service.SendNotifyMerchantService) + keyDataJSON := se.SendNotifyToMerchant(bankOrderId) + + c.Data["json"] = keyDataJSON + _ = c.ServeJSON() +} + +func (c *SendNotify) SelfSendNotify() { + bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) + + se := new(service.SendNotifyMerchantService) + keyDataJSON := se.SelfSendNotify(bankOrderId) + c.Data["json"] = keyDataJSON + _ = c.ServeJSON() +} diff --git a/boss/controllers/updateController.go b/boss/controllers/updateController.go index ec20506..08c039a 100644 --- a/boss/controllers/updateController.go +++ b/boss/controllers/updateController.go @@ -10,14 +10,11 @@ package controllers import ( - "boss/common" - "boss/models" - controller "boss/supplier" + "boss/datas" + "boss/models/user" + "boss/service" "boss/utils" - "fmt" "github.com/beego/beego/v2/adapter/validation" - "github.com/beego/beego/v2/core/logs" - "strconv" "strings" ) @@ -35,13 +32,13 @@ func (c *UpdateController) UpdatePassword() { userID, ok := c.GetSession("userID").(string) - dataJSON := new(KeyDataJSON) + dataJSON := new(datas.KeyDataJSON) dataJSON.Code = -1 if !ok || userID == "" { dataJSON.Code = 404 dataJSON.Msg = "请重新登录!" } else { - userInfo := models.GetUserInfoByUserID(userID) + userInfo := user.GetUserInfoByUserID(userID) valid := validation.Validation{} if userInfo.Passwd != utils.GetMD5Upper(oldPassword) { dataJSON.Key = ".old-error" @@ -62,10 +59,10 @@ func (c *UpdateController) UpdatePassword() { dataJSON.Code = 200 dataJSON.Msg = "密码修改成功!" //删除原先的session状态 - c.DelSession("userID") + _ = c.DelSession("userID") //更新数据库的密码 userInfo.Passwd = utils.GetMD5Upper(newPassword) - models.UpdateUserInfoPassword(userInfo) + user.UpdateUserInfoPassword(userInfo) } } c.GenerateJSON(dataJSON) @@ -76,62 +73,16 @@ func (c *UpdateController) UpdatePassword() { */ func (c *UpdateController) UpMenu() { menuUid := c.GetString("menuUid") - menuInfo := models.GetMenuInfoByMenuUid(menuUid) - dataJSON := new(BaseDataJSON) - if menuInfo.MenuUid == "" { - dataJSON.Msg = "更改排列顺序失败" - dataJSON.Code = -1 - } else { - exist := models.MenuOrderIsExists(menuInfo.MenuOrder - 1) - if !exist { - dataJSON.Msg = "已经是最高的顺序" - dataJSON.Code = -1 - } else { - //如果他前面有菜单,那么交换他们的menuOrder - preMenuInfo := models.GetMenuInfoByMenuOrder(menuInfo.MenuOrder - 1) - menuInfo.MenuOrder = menuInfo.MenuOrder - 1 - preMenuInfo.MenuOrder = preMenuInfo.MenuOrder + 1 - preMenuInfo.UpdateTime = utils.GetBasicDateTime() - menuInfo.UpdateTime = utils.GetBasicDateTime() - //更新菜单表 - models.UpdateMenuInfo(preMenuInfo) - models.UpdateMenuInfo(menuInfo) - //更新二级菜单表 - SortSecondMenuOrder(preMenuInfo) - SortSecondMenuOrder(menuInfo) - dataJSON.Code = 200 - } - } + se := new(service.UpdateService) + dataJSON := se.UpMenu(menuUid) + c.GenerateJSON(dataJSON) } func (c *UpdateController) DownMenu() { menuUid := c.GetString("menuUid") - menuInfo := models.GetMenuInfoByMenuUid(menuUid) - dataJSON := new(BaseDataJSON) - if menuInfo.MenuUid == "" { - dataJSON.Msg = "更改排列顺序失败" - dataJSON.Code = -1 - } else { - exist := models.MenuOrderIsExists(menuInfo.MenuOrder + 1) - if !exist { - dataJSON.Msg = "已经是最高的顺序" - dataJSON.Code = -1 - } else { - //如果他前面有菜单,那么交换他们的menuOrder - lastMenuInfo := models.GetMenuInfoByMenuOrder(menuInfo.MenuOrder + 1) - menuInfo.MenuOrder = menuInfo.MenuOrder + 1 - lastMenuInfo.MenuOrder = lastMenuInfo.MenuOrder - 1 - lastMenuInfo.UpdateTime = utils.GetBasicDateTime() - menuInfo.UpdateTime = utils.GetBasicDateTime() - //更新菜单表 - models.UpdateMenuInfo(lastMenuInfo) - models.UpdateMenuInfo(menuInfo) - //更新二级菜单表 - SortSecondMenuOrder(lastMenuInfo) - SortSecondMenuOrder(menuInfo) - dataJSON.Code = 200 - } - } + se := new(service.UpdateService) + dataJSON := se.DownMenu(menuUid) + c.GenerateJSON(dataJSON) } @@ -140,22 +91,9 @@ func (c *UpdateController) DownMenu() { */ func (c *UpdateController) UpSecondMenu() { secondMenuUid := c.GetString("secondMenuUid") - secondMenuInfo := models.GetSecondMenuInfoBySecondMenuUid(secondMenuUid) - dataJSON := new(BaseDataJSON) - if secondMenuInfo.MenuOrder == 1 { - dataJSON.Code = -1 - } else { - preSecondMenuInfo := models.GetSecondMenuInfoByMenuOrder(secondMenuInfo.MenuOrder-1, secondMenuInfo.FirstMenuUid) - preSecondMenuInfo.MenuOrder = preSecondMenuInfo.MenuOrder + 1 - preSecondMenuInfo.UpdateTime = utils.GetBasicDateTime() - secondMenuInfo.MenuOrder = secondMenuInfo.MenuOrder - 1 - secondMenuInfo.UpdateTime = utils.GetBasicDateTime() - //更新二级菜单项 - models.UpdateSecondMenu(preSecondMenuInfo) - models.UpdateSecondMenu(secondMenuInfo) + se := new(service.UpdateService) + dataJSON := se.UpSecondMenu(secondMenuUid) - dataJSON.Code = 200 - } c.GenerateJSON(dataJSON) } @@ -164,41 +102,15 @@ func (c *UpdateController) UpSecondMenu() { */ func (c *UpdateController) DownSecondMenu() { secondMenuUid := c.GetString("secondMenuUid") - secondMenuInfo := models.GetSecondMenuInfoBySecondMenuUid(secondMenuUid) - - dataJSON := new(BaseDataJSON) - - l := models.GetSecondMenuLenByFirstMenuUid(secondMenuInfo.FirstMenuUid) - if l == secondMenuInfo.MenuOrder { - dataJSON.Code = -1 - } else { - lastSecondMenu := models.GetSecondMenuInfoByMenuOrder(secondMenuInfo.MenuOrder+1, secondMenuInfo.FirstMenuUid) - lastSecondMenu.MenuOrder = lastSecondMenu.MenuOrder - 1 - lastSecondMenu.UpdateTime = utils.GetBasicDateTime() - - secondMenuInfo.MenuOrder = secondMenuInfo.MenuOrder + 1 - secondMenuInfo.UpdateTime = utils.GetBasicDateTime() - - models.UpdateSecondMenu(lastSecondMenu) - models.UpdateSecondMenu(secondMenuInfo) - - dataJSON.Code = 200 - } + se := new(service.UpdateService) + dataJSON := se.DownSecondMenu(secondMenuUid) c.GenerateJSON(dataJSON) } func (c *UpdateController) FreezeOperator() { userId := strings.TrimSpace(c.GetString("operatorName")) - - dataJSON := new(BaseDataJSON) - - if models.UpdateStauts("unactive", userId) { - dataJSON.Code = 200 - dataJSON.Msg = "冻结成功" - } else { - dataJSON.Code = -1 - dataJSON.Msg = "冻结失败" - } + se := new(service.UpdateService) + dataJSON := se.FreezeOperator(userId) c.GenerateJSON(dataJSON) } @@ -206,15 +118,9 @@ func (c *UpdateController) FreezeOperator() { func (c *UpdateController) UnfreezeOperator() { userId := strings.TrimSpace(c.GetString("operatorName")) - dataJSON := new(BaseDataJSON) + se := new(service.UpdateService) + dataJSON := se.UnfreezeOperator(userId) - if models.UpdateStauts("active", userId) { - dataJSON.Code = 200 - dataJSON.Msg = "解冻成功" - } else { - dataJSON.Code = -1 - dataJSON.Msg = "解冻失败" - } c.GenerateJSON(dataJSON) } @@ -226,39 +132,8 @@ func (c *UpdateController) EditOperator() { nick := strings.TrimSpace(c.GetString("nick")) remark := strings.TrimSpace(c.GetString("remark")) - keyDataJSON := new(KeyDataJSON) - - if (len(password) > 0 || len(changePassword) > 0) && password != changePassword { - keyDataJSON.Code = -1 - keyDataJSON.Key = ".veritfy-operator-password-error" - keyDataJSON.Msg = "*2次密码输入不一致" - c.GenerateJSON(keyDataJSON) - } - - if role == "" || role == "none" { - keyDataJSON.Code = -1 - keyDataJSON.Key = ".change-operator-role-error" - keyDataJSON.Msg = "*角色不能为空" - c.GenerateJSON(keyDataJSON) - } - - userInfo := models.GetUserInfoByUserID(userId) - if userInfo.UserId == "" { - keyDataJSON.Code = -2 - keyDataJSON.Msg = "该用户不存在" - } else { - userInfo.UpdateTime = utils.GetBasicDateTime() - userInfo.Remark = remark - roleInfo := models.GetRoleByRoleUid(role) - userInfo.RoleName = roleInfo.RoleName - userInfo.Role = role - if len(password) > 0 && len(changePassword) > 0 && password == changePassword { - userInfo.Passwd = utils.GetMD5Upper(password) - } - userInfo.Nick = nick - models.UpdateUserInfo(userInfo) - keyDataJSON.Code = 200 - } + se := new(service.UpdateService) + keyDataJSON := se.EditOperator(password, changePassword, role, userId, nick, remark) c.GenerateJSON(keyDataJSON) } @@ -269,20 +144,9 @@ func (c *UpdateController) EditOperator() { func (c *UpdateController) UpdateRoadStatus() { roadUid := strings.TrimSpace(c.GetString("roadUid")) - dataJSON := new(BaseDataJSON) - dataJSON.Code = 200 + se := new(service.UpdateService) + dataJSON := se.UpdateRoadStatus(roadUid) - roadInfo := models.GetRoadInfoByRoadUid(roadUid) - if roadInfo.Status == "active" { - roadInfo.Status = "unactive" - } else { - roadInfo.Status = "active" - } - if models.UpdateRoadInfo(roadInfo) { - dataJSON.Code = 200 - } else { - dataJSON.Code = -1 - } c.GenerateJSON(dataJSON) } @@ -291,33 +155,9 @@ func (c *UpdateController) UpdateRoadStatus() { */ func (c *UpdateController) UpdateMerchantStatus() { merchantUid := strings.TrimSpace(c.GetString("merchantUid")) - keyDataJSON := new(KeyDataJSON) - if merchantUid == "" { - keyDataJSON.Code = -1 - c.GenerateJSON(keyDataJSON) - return - } + se := new(service.UpdateService) + keyDataJSON := se.UpdateMerchantStatus(merchantUid) - merchantInfo := models.GetMerchantByUid(merchantUid) - - if merchantInfo.MerchantUid == "" { - keyDataJSON.Code = -1 - c.GenerateJSON(keyDataJSON) - return - } - - if merchantInfo.Status == "active" { - merchantInfo.Status = "unactive" - } else { - merchantInfo.Status = "active" - } - merchantInfo.UpdateTime = utils.GetBasicDateTime() - - if models.UpdateMerchant(merchantInfo) { - keyDataJSON.Code = 200 - } else { - keyDataJSON.Code = -1 - } c.GenerateJSON(keyDataJSON) } @@ -327,22 +167,9 @@ func (c *UpdateController) UpdateMerchantStatus() { func (c *UpdateController) UpdateAccountStatus() { accountUid := strings.TrimSpace(c.GetString("accountUid")) - accountInfo := models.GetAccountByUid(accountUid) - if accountInfo.Status == "active" { - accountInfo.Status = "unactive" - } else { - accountInfo.Status = "active" - } - accountInfo.UpdateTime = utils.GetBasicDateTime() + se := new(service.UpdateService) + dataJSON := se.UpdateAccountStatus(accountUid) - dataJSON := new(BaseDataJSON) - if models.UpdateAccount(accountInfo) { - dataJSON.Code = 200 - dataJSON.Msg = "更新账户状态成功" - } else { - dataJSON.Code = -1 - dataJSON.Msg = "更新账户状态失败" - } c.GenerateJSON(dataJSON) } func (c *UpdateController) OperatorAccount() { @@ -350,59 +177,16 @@ func (c *UpdateController) OperatorAccount() { accountOperator := strings.TrimSpace(c.GetString("accountOperator")) amount := strings.TrimSpace(c.GetString("amount")) - accountDataJSON := new(AccountDataJSON) - switch accountOperator { - case common.PLUS_AMOUNT: - case common.SUB_AMOUNT: - case common.FREEZE_AMOUNT: - case common.UNFREEZE_AMOUNT: - default: - accountDataJSON.Code = -1 - } - a, err := strconv.ParseFloat(amount, 64) - if err != nil { - accountDataJSON.Msg = "处理金额输入有误" - } - if accountDataJSON.Code == -1 { - c.GenerateJSON(accountDataJSON) - return - } - msg, flag := models.OperatorAccount(accountUid, accountOperator, a) - if flag { - accountDataJSON.Code = 200 - accountDataJSON.Msg = "处理成功,请检查对应账户信息" - accountDataJSON.AccountList = append(accountDataJSON.AccountList, models.GetAccountByUid(accountUid)) - } else { - accountDataJSON.Code = -1 - accountDataJSON.Msg = msg - } + se := new(service.UpdateService) + accountDataJSON := se.OperatorAccount(accountOperator, amount, accountUid) c.GenerateJSON(accountDataJSON) } func (c *UpdateController) UpdateAgentStatus() { agentUid := strings.TrimSpace(c.GetString("agentUid")) - agentInfo := models.GetAgentInfoByAgentUid(agentUid) - - keyDataJSON := new(KeyDataJSON) - - if agentInfo.AgentUid == "" { - keyDataJSON.Code = -1 - c.GenerateJSON(keyDataJSON) - } - - if agentInfo.Status == "active" { - agentInfo.Status = "unactive" - } else { - agentInfo.Status = "active" - } - agentInfo.UpdateTime = utils.GetBasicDateTime() - if models.UpdateAgentInfo(agentInfo) { - keyDataJSON.Code = 200 - } else { - keyDataJSON.Code = -1 - } - c.GenerateJSON(keyDataJSON) + se := new(service.UpdateService) + c.GenerateJSON(se.UpdateAgentStatus(agentUid)) } func (c *UpdateController) ResetAgentPassword() { @@ -410,32 +194,9 @@ func (c *UpdateController) ResetAgentPassword() { newPassword := strings.TrimSpace(c.GetString("newPassword")) newVertifyPassword := strings.TrimSpace(c.GetString("newVertifyPassword")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = 200 - if agentUid == "" { - keyDataJSON.Code = -2 - } else if newPassword == "" { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#agent-login-password-error-reset" - keyDataJSON.Msg = " *新密码不能为空" - } else if newVertifyPassword != newPassword { - keyDataJSON.Code = -1 - keyDataJSON.Key = "#agent-vertify-password-error-reset" - keyDataJSON.Msg = " *两次密码输入不一致" - } + se := new(service.UpdateService) - if keyDataJSON.Code != 200 { - c.GenerateJSON(keyDataJSON) - return - } - - agentInfo := models.GetAgentInfoByAgentUid(agentUid) - agentInfo.UpdateTime = utils.GetBasicDateTime() - agentInfo.AgentPassword = utils.GetMD5Upper(newPassword) - if !models.UpdateAgentInfo(agentInfo) { - keyDataJSON.Code = -1 - } - c.GenerateJSON(keyDataJSON) + c.GenerateJSON(se.ResetAgentPassword(agentUid, newPassword, newVertifyPassword)) } /* @@ -447,41 +208,9 @@ func (c *UpdateController) ChoosePayForRoad() { remark := strings.TrimSpace(c.GetString("remark")) confirmType := strings.TrimSpace(c.GetString("confirmType")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = 200 + se := new(service.UpdateService) - if confirmType == common.PAYFOR_ROAD && roadName == "" { - keyDataJSON.Msg = "打款通道不能为空" - keyDataJSON.Code = -1 - c.GenerateJSON(keyDataJSON) - return - } - - payForInfo := models.GetPayForByBankOrderId(bankOrderId) - roadInfo := models.GetRoadInfoByName(roadName) - - if payForInfo.Status != common.PAYFOR_COMFRIM { - keyDataJSON.Msg = "结算状态错误,请刷新后确认" - } else { - payForInfo.UpdateTime = utils.GetBasicDateTime() - payForInfo.GiveType = confirmType - if confirmType == common.PAYFOR_REFUSE { - //拒绝打款 - payForInfo.Status = common.PAYFOR_FAIL - } else { - payForInfo.Status = common.PAYFOR_SOLVING - } - payForInfo.RoadUid = roadInfo.RoadUid - payForInfo.RoadName = roadInfo.RoadName - payForInfo.Remark = remark - - if !models.ForUpdatePayFor(payForInfo) { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "更新代付记录失败" - } - } - - c.GenerateJSON(keyDataJSON) + c.GenerateJSON(se.ChoosePayForRoad(confirmType, roadName, bankOrderId, remark)) } /* @@ -491,102 +220,16 @@ func (c *UpdateController) ResultPayFor() { resultType := strings.TrimSpace(c.GetString("resultType")) bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) - keyDataJSON := new(KeyDataJSON) - keyDataJSON.Code = 200 + se := new(service.UpdateService) - if resultType == "" || bankOrderId == "" { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "提交的数据有误" - c.GenerateJSON(keyDataJSON) - return - } - - payFor := models.GetPayForByBankOrderId(bankOrderId) - - if payFor.Type == common.SELF_HELP { - //如果是管理员在后台提现,不用做任何的商户减款,只需要更新代付订单状态 - payFor.UpdateTime = utils.GetBasicDateTime() - payFor.Status = resultType - - if !models.ForUpdatePayFor(payFor) { - keyDataJSON.Code = -1 - keyDataJSON.Msg = "系统处理失败" - } - c.GenerateJSON(keyDataJSON) - return - } - - if payFor.Status == common.PAYFOR_FAIL || payFor.Status == common.PAYFOR_SUCCESS { - logs.Error(fmt.Sprintf("该代付订单=%s,状态有误....", bankOrderId)) - keyDataJSON.Code = -1 - keyDataJSON.Msg = "订单状态有误,请刷新重新判断" - c.GenerateJSON(keyDataJSON) - return - } - - if resultType == common.PAYFOR_FAIL { - //处理代付失败的逻辑,减去相应的代付冻结金额 - if !controller.PayForFail(payFor) { - logs.Error(fmt.Sprintf("商户uid=%s,处理代付失败逻辑出错", payFor.MerchantUid)) - keyDataJSON.Msg = "代付失败逻辑,处理失败" - keyDataJSON.Code = -1 - } - } else if resultType == common.PAYFOR_SUCCESS { - //代付成功,减去相应的代付冻结金额,并且余额减掉,可用金额减掉 - if !controller.PayForSuccess(payFor) { - logs.Error(fmt.Sprintf("商户uid=%s,处理代付成功逻辑出错", payFor.MerchantUid)) - keyDataJSON.Msg = "代付成功逻辑,处理失败" - keyDataJSON.Code = -1 - } - } - - if keyDataJSON.Code == 200 { - keyDataJSON.Msg = "处理成功" - } - - c.GenerateJSON(keyDataJSON) + c.GenerateJSON(se.ResultPayFor(resultType, bankOrderId)) } func (c *UpdateController) UpdateOrderStatus() { bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) solveType := strings.TrimSpace(c.GetString("solveType")) - keyDataJSON := new(KeyDataJSON) - orderInfo := models.GetOrderByBankOrderId(bankOrderId) - if orderInfo.BankOrderId == "" { - logs.Error("该订单不存在,bankOrderId=", bankOrderId) - keyDataJSON.Code = -1 - } else { - paySolve := new(controller.PaySolveController) - flag := false - switch solveType { - case common.SUCCESS: - flag = paySolve.SolvePaySuccess(bankOrderId, orderInfo.FactAmount, common.SUCCESS) - case common.FAIL: - flag = paySolve.SolvePayFail(orderInfo, common.FAIL) - case common.FREEZE_AMOUNT: - //将这笔订单进行冻结 - flag = paySolve.SolveOrderFreeze(bankOrderId) - case common.UNFREEZE_AMOUNT: - //将这笔订单金额解冻 - flag = paySolve.SolveOrderUnfreeze(bankOrderId) - case common.REFUND: - if orderInfo.Status == common.SUCCESS { - flag = paySolve.SolveRefund(bankOrderId) - } - case common.ORDERROLL: - if orderInfo.Status == common.SUCCESS { - flag = paySolve.SolveOrderRoll(bankOrderId) - } - default: - logs.Error("不存在这样的处理类型") - } - if flag { - keyDataJSON.Code = 200 - } else { - keyDataJSON.Code = -1 - } - } + se := new(service.UpdateService) - c.GenerateJSON(keyDataJSON) + c.GenerateJSON(se.UpdateOrderStatus(bankOrderId, solveType)) } diff --git a/boss/controllers/datas.go b/boss/datas/datas.go similarity index 76% rename from boss/controllers/datas.go rename to boss/datas/datas.go index cafaaed..e0a21c2 100644 --- a/boss/controllers/datas.go +++ b/boss/datas/datas.go @@ -1,6 +1,15 @@ -package controllers +package datas -import "boss/models" +import ( + "boss/models/accounts" + "boss/models/agent" + "boss/models/merchant" + "boss/models/order" + "boss/models/payfor" + "boss/models/road" + "boss/models/system" + "boss/models/user" +) type BaseDataJSON struct { Msg string @@ -20,7 +29,7 @@ type MenuDataJSON struct { TotalPage int Code int Msg string - MenuList []models.MenuInfo + MenuList []system.MenuInfo } type SecondMenuDataJSON struct { @@ -30,7 +39,7 @@ type SecondMenuDataJSON struct { TotalPage int Code int Msg string - SecondMenuList []models.SecondMenuInfo + SecondMenuList []system.SecondMenuInfo } type PowerItemDataJSON struct { @@ -40,7 +49,7 @@ type PowerItemDataJSON struct { TotalPage int Code int Msg string - PowerItemList []models.PowerInfo + PowerItemList []system.PowerInfo } type RoleInfoDataJSON struct { @@ -50,18 +59,18 @@ type RoleInfoDataJSON struct { TotalPage int Code int Msg string - RoleInfoList []models.RoleInfo + RoleInfoList []system.RoleInfo } type DeployTreeJSON struct { Msg string Code int Key string - AllFirstMenu []models.MenuInfo + AllFirstMenu []system.MenuInfo ShowFirstMenuUid map[string]bool - AllSecondMenu []models.SecondMenuInfo + AllSecondMenu []system.SecondMenuInfo ShowSecondMenuUid map[string]bool - AllPower []models.PowerInfo + AllPower []system.PowerInfo ShowPowerUid map[string]bool } @@ -72,14 +81,14 @@ type OperatorDataJSON struct { DisplayCount int CurrentPage int TotalPage int - OperatorList []models.UserInfo + OperatorList []user.UserInfo } type EditOperatorDataJSON struct { Code int Msg string - OperatorList []models.UserInfo - RoleList []models.RoleInfo + OperatorList []user.UserInfo + RoleList []system.RoleInfo } type BankCardDataJSON struct { @@ -89,7 +98,7 @@ type BankCardDataJSON struct { DisplayCount int CurrentPage int TotalPage int - BankCardInfoList []models.BankCardInfo + BankCardInfoList []system.BankCardInfo } type RoadDataJSON struct { @@ -99,8 +108,8 @@ type RoadDataJSON struct { DisplayCount int CurrentPage int TotalPage int - RoadInfoList []models.RoadInfo - RoadPool models.RoadPoolInfo + RoadInfoList []road.RoadInfo + RoadPool road.RoadPoolInfo } type RoadPoolDataJSON struct { @@ -110,7 +119,7 @@ type RoadPoolDataJSON struct { DisplayCount int CurrentPage int TotalPage int - RoadPoolInfoList []models.RoadPoolInfo + RoadPoolInfoList []road.RoadPoolInfo } type MerchantDataJSON struct { @@ -120,13 +129,13 @@ type MerchantDataJSON struct { DisplayCount int CurrentPage int TotalPage int - MerchantList []models.MerchantInfo + MerchantList []merchant.MerchantInfo } type MerchantDeployDataJSON struct { Code int Msg string - MerchantDeploy models.MerchantDeployInfo + MerchantDeploy merchant.MerchantDeployInfo } type AccountDataJSON struct { @@ -136,7 +145,7 @@ type AccountDataJSON struct { DisplayCount int CurrentPage int TotalPage int - AccountList []models.AccountInfo + AccountList []accounts.AccountInfo } type AccountHistoryDataJSON struct { @@ -146,7 +155,7 @@ type AccountHistoryDataJSON struct { DisplayCount int CurrentPage int TotalPage int - AccountHistoryList []models.AccountHistoryInfo + AccountHistoryList []accounts.AccountHistoryInfo } type AgentDataJSON struct { @@ -156,7 +165,7 @@ type AgentDataJSON struct { DisplayCount int CurrentPage int TotalPage int - AgentList []models.AgentInfo + AgentList []agent.AgentInfo } type ProductDataJSON struct { @@ -172,7 +181,7 @@ type OrderDataJSON struct { DisplayCount int CurrentPage int TotalPage int - OrderList []models.OrderInfo + OrderList []order.OrderInfo AllAmount float64 SuccessRate string NotifyUrl string @@ -185,7 +194,7 @@ type ListDataJSON struct { DisplayCount int CurrentPage int TotalPage int - List []models.OrderProfitInfo + List []order.OrderProfitInfo AllAmount float64 SupplierProfit float64 AgentProfit float64 @@ -199,7 +208,7 @@ type PayForDataJSON struct { DisplayCount int CurrentPage int TotalPage int - PayForList []models.PayforInfo + PayForList []payfor.PayforInfo } type BalanceDataJSON struct { @@ -220,5 +229,5 @@ type ProfitListJSON struct { AgentTotalProfit float64 Msg string Code int - ProfitList []models.PlatformProfit + ProfitList []order.PlatformProfit } diff --git a/boss/message_queue/active_mq.go b/boss/message_queue/active_mq.go deleted file mode 100644 index d9120c9..0000000 --- a/boss/message_queue/active_mq.go +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************** - ** @Desc : This file for ... - ** @Time : 2019/11/6 11:43 - ** @Author : yuebin - ** @File : active_mq - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/11/6 11:43 - ** @Software: GoLand -****************************************************/ -package message_queue - -import ( - "boss/common" - "github.com/beego/beego/v2/core/logs" - "github.com/go-stomp/stomp" - "os" - "time" -) - -//解决第一个问题的代码 -var activeConn *stomp.Conn - -var options = []func(*stomp.Conn) error{ - //设置读写超时,超时时间为1个小时 - stomp.ConnOpt.HeartBeat(7200*time.Second, 7200*time.Second), - stomp.ConnOpt.HeartBeatError(360 * time.Second), -} - -func init() { - address := common.GetMQAddress() - - conn, err := stomp.Dial("tcp", address, options...) - if err != nil { - logs.Error("链接active mq 失败:", err.Error()) - os.Exit(1) - } - - activeConn = conn -} - -func GetActiveMQConn() *stomp.Conn { - return activeConn -} - - diff --git a/boss/message_queue/send_message.go b/boss/message_queue/send_message.go deleted file mode 100644 index 0ad0024..0000000 --- a/boss/message_queue/send_message.go +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************** - ** @Desc : This file for ... - ** @Time : 2019/11/21 15:53 - ** @Author : yuebin - ** @File : send_message - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/11/21 15:53 - ** @Software: GoLand -****************************************************/ -package message_queue - -import ( - "github.com/beego/beego/v2/core/logs" - "os" -) - -func SendMessage(topic, message string) { - - conn := GetActiveMQConn() - - if conn == nil { - logs.Error("send message get Active mq fail") - os.Exit(1) - } - - err := conn.Send(topic, "text/plain", []byte(message)) - - if err != nil { - logs.Error("发送消息给activeMQ失败, message=", message) - } else { - logs.Info("发送消息给activeMQ成功,message=", message) - } -} diff --git a/boss/models/account.go b/boss/models/accounts/account.go similarity index 99% rename from boss/models/account.go rename to boss/models/accounts/account.go index 770c85c..0351f2d 100644 --- a/boss/models/account.go +++ b/boss/models/accounts/account.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/10/16 11:11 ** @Software: GoLand ****************************************************/ -package models +package accounts import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/account_history_info.go b/boss/models/accounts/account_history_info.go similarity index 85% rename from boss/models/account_history_info.go rename to boss/models/accounts/account_history_info.go index abb630f..8914c4f 100644 --- a/boss/models/account_history_info.go +++ b/boss/models/accounts/account_history_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/10/19 14:56 ** @Software: GoLand ****************************************************/ -package models +package accounts import ( "github.com/beego/beego/v2/client/orm" @@ -27,16 +27,6 @@ type AccountHistoryInfo struct { 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) diff --git a/boss/models/agent_info.go b/boss/models/agent/agent_info.go similarity index 91% rename from boss/models/agent_info.go rename to boss/models/agent/agent_info.go index 2c43f1e..80fc7e1 100644 --- a/boss/models/agent_info.go +++ b/boss/models/agent/agent_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/9/19 14:41 ** @Software: GoLand ****************************************************/ -package models +package agent import ( "github.com/beego/beego/v2/client/orm" @@ -72,18 +72,6 @@ func GetAgentInfoByAgentUid(agentUid string) AgentInfo { 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) diff --git a/boss/models/agent_profit.go b/boss/models/agent/agent_profit.go similarity index 95% rename from boss/models/agent_profit.go rename to boss/models/agent/agent_profit.go index 1897b85..f217152 100644 --- a/boss/models/agent_profit.go +++ b/boss/models/agent/agent_profit.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/12/17 17:50 ** @Software: GoLand ****************************************************/ -package models +package agent type AgentProfit struct { } diff --git a/boss/models/init.go b/boss/models/init.go index 87c4aae..3c1f97b 100644 --- a/boss/models/init.go +++ b/boss/models/init.go @@ -11,6 +11,15 @@ package models import ( "boss/conf" + "boss/models/accounts" + "boss/models/agent" + "boss/models/merchant" + "boss/models/notify" + "boss/models/order" + "boss/models/payfor" + "boss/models/road" + "boss/models/system" + "boss/models/user" "fmt" "github.com/beego/beego/v2/client/orm" "github.com/beego/beego/v2/core/logs" @@ -30,10 +39,10 @@ func init() { orm.RegisterDriver("mysql", orm.DRMySQL) orm.RegisterDataBase("default", "mysql", link) - orm.RegisterModel(new(UserInfo), new(MenuInfo), new(SecondMenuInfo), - new(PowerInfo), new(RoleInfo), new(BankCardInfo), new(RoadInfo), - new(RoadPoolInfo), new(AgentInfo), new(MerchantInfo), new(MerchantDeployInfo), - new(AccountInfo), new(AccountHistoryInfo), new(OrderInfo), new(OrderProfitInfo), - new(OrderSettleInfo), new(NotifyInfo), new(MerchantLoadInfo), - new(PayforInfo)) + orm.RegisterModel(new(user.UserInfo), new(system.MenuInfo), new(system.SecondMenuInfo), + new(system.PowerInfo), new(system.RoleInfo), new(system.BankCardInfo), new(road.RoadInfo), + new(road.RoadPoolInfo), new(agent.AgentInfo), new(merchant.MerchantInfo), new(merchant.MerchantDeployInfo), + new(accounts.AccountInfo), new(accounts.AccountHistoryInfo), new(order.OrderInfo), new(order.OrderProfitInfo), + new(order.OrderSettleInfo), new(notify.NotifyInfo), new(merchant.MerchantLoadInfo), + new(payfor.PayforInfo)) } diff --git a/boss/models/merchant_deploy_info.go b/boss/models/merchant/merchant_deploy_info.go similarity index 64% rename from boss/models/merchant_deploy_info.go rename to boss/models/merchant/merchant_deploy_info.go index e8fa6da..ebcbb3d 100644 --- a/boss/models/merchant_deploy_info.go +++ b/boss/models/merchant/merchant_deploy_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/10/7 11:52 ** @Software: GoLand ****************************************************/ -package models +package merchant import ( "github.com/beego/beego/v2/client/orm" @@ -65,25 +65,6 @@ func GetMerchantDeployByUidAndPayType(uid, payType string) MerchantDeployInfo { 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() @@ -103,33 +84,3 @@ func UpdateMerchantDeploy(merchantDeploy MerchantDeployInfo) bool { } 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 -} diff --git a/boss/models/merchant_info.go b/boss/models/merchant/merchant_info.go similarity index 88% rename from boss/models/merchant_info.go rename to boss/models/merchant/merchant_info.go index 2877ace..3d82677 100644 --- a/boss/models/merchant_info.go +++ b/boss/models/merchant/merchant_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/9/28 16:47 ** @Software: GoLand ****************************************************/ -package models +package merchant import ( "github.com/beego/beego/v2/client/orm" @@ -68,15 +68,6 @@ func IsExistByMerchantPhone(phone string) bool { return exist } -func GetMerchantByPhone(phone string) (m MerchantInfo) { - o := orm.NewOrm() - _, e := o.QueryTable(MERCHANT_INFO).Filter("LoginAccount", phone).Limit(1).All(&m) - if e != nil { - logs.Error("GetMerchantByPhone merchant fail: ", e) - } - return m -} - func InsertMerchantInfo(merchantInfo MerchantInfo) bool { o := orm.NewOrm() _, err := o.Insert(&merchantInfo) @@ -172,16 +163,6 @@ func GetMerchantByUid(merchantUid string) MerchantInfo { return merchantInfo } -func GetMerchantByPaykey(payKey string) MerchantInfo { - o := orm.NewOrm() - var merchantInfo MerchantInfo - _, err := o.QueryTable(MERCHANT_INFO).Filter("merchant_key", payKey).Limit(1).All(&merchantInfo) - if err != nil { - logs.Error("get merchant by merchantKey fail: ", err) - } - return merchantInfo -} - func UpdateMerchant(merchantInfo MerchantInfo) bool { o := orm.NewOrm() _, err := o.Update(&merchantInfo) diff --git a/boss/models/merchant_load_info.go b/boss/models/merchant/merchant_load_info.go similarity index 98% rename from boss/models/merchant_load_info.go rename to boss/models/merchant/merchant_load_info.go index 8277c6f..6da7b41 100644 --- a/boss/models/merchant_load_info.go +++ b/boss/models/merchant/merchant_load_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/11/22 13:07 ** @Software: GoLand ****************************************************/ -package models +package merchant import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/notify_info.go b/boss/models/notify/notify_info.go similarity index 67% rename from boss/models/notify_info.go rename to boss/models/notify/notify_info.go index d2bab17..5920b46 100644 --- a/boss/models/notify_info.go +++ b/boss/models/notify/notify_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/11/20 13:13 ** @Software: GoLand ****************************************************/ -package models +package notify import ( "github.com/beego/beego/v2/client/orm" @@ -39,12 +39,6 @@ func InsertNotifyInfo(notifyInfo NotifyInfo) bool { return true } -func NotifyInfoExistByBankOrderId(bankOrderId string) bool { - o := orm.NewOrm() - exist := o.QueryTable(NOTIFYINFO).Filter("bank_order_id", bankOrderId).Exist() - return exist -} - func GetNotifyInfoByBankOrderId(bankOrderId string) NotifyInfo { o := orm.NewOrm() var notifyInfo NotifyInfo @@ -56,23 +50,6 @@ func GetNotifyInfoByBankOrderId(bankOrderId string) NotifyInfo { return notifyInfo } -func GetNotifyInfosNotSuccess(params map[string]interface{}) []NotifyInfo { - o := orm.NewOrm() - var notifyInfoList []NotifyInfo - qs := o.QueryTable(NOTIFYINFO) - for k, v := range params { - qs = qs.Filter(k, v) - } - qs = qs.Exclude("status", "success") - _, err := qs.Limit(-1).All(¬ifyInfoList) - - if err != nil { - logs.Error("get notifyinfos fail: ", err) - } - - return notifyInfoList -} - func GetNotifyBankOrderIdListByParams(params map[string]string) []string { o := orm.NewOrm() qs := o.QueryTable(NOTIFYINFO) @@ -91,13 +68,3 @@ func GetNotifyBankOrderIdListByParams(params map[string]string) []string { return list } - -func UpdateNotifyInfo(notifyInfo NotifyInfo) bool { - o := orm.NewOrm() - _, err := o.Update(¬ifyInfo) - if err != nil { - logs.Error("update notify info fail: ", err) - return false - } - return true -} diff --git a/boss/models/order_info.go b/boss/models/order/order_info.go similarity index 88% rename from boss/models/order_info.go rename to boss/models/order/order_info.go index 1a82ce0..eefdc72 100644 --- a/boss/models/order_info.go +++ b/boss/models/order/order_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/10/28 10:15 ** @Software: GoLand ****************************************************/ -package models +package order import ( "fmt" @@ -54,22 +54,6 @@ type OrderInfo struct { 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() @@ -97,7 +81,7 @@ func GetOrderByMap(params map[string]string, display, offset int) []OrderInfo { qs = qs.Filter(k, v) } } - _, err := qs.Limit(display, offset).OrderBy("-update_time").All(&orderInfoList) + _, err := qs.Limit(display, offset).OrderBy("-create_time").All(&orderInfoList) if err != nil { logs.Error("get order by map fail: ", err) } @@ -200,16 +184,6 @@ func GetOrderByBankOrderId(bankOrderId string) OrderInfo { 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 diff --git a/boss/models/order_profit_info.go b/boss/models/order/order_profit_info.go similarity index 99% rename from boss/models/order_profit_info.go rename to boss/models/order/order_profit_info.go index 94e8559..ec22084 100644 --- a/boss/models/order_profit_info.go +++ b/boss/models/order/order_profit_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/10/30 11:44 ** @Software: GoLand ****************************************************/ -package models +package order import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/order_settle_info.go b/boss/models/order/order_settle_info.go similarity index 98% rename from boss/models/order_settle_info.go rename to boss/models/order/order_settle_info.go index 966477d..a4bbc1f 100644 --- a/boss/models/order_settle_info.go +++ b/boss/models/order/order_settle_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/10/30 11:41 ** @Software: GoLand ****************************************************/ -package models +package order import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/platform_profit.go b/boss/models/order/platform_profit.go similarity index 97% rename from boss/models/platform_profit.go rename to boss/models/order/platform_profit.go index d408819..08e8e87 100644 --- a/boss/models/platform_profit.go +++ b/boss/models/order/platform_profit.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/12/17 17:50 ** @Software: GoLand ****************************************************/ -package models +package order type PlatformProfit struct { MerchantName string diff --git a/boss/models/payfor_info.go b/boss/models/payfor/payfor_info.go similarity index 86% rename from boss/models/payfor_info.go rename to boss/models/payfor/payfor_info.go index 2a61a6b..38d6e25 100644 --- a/boss/models/payfor_info.go +++ b/boss/models/payfor/payfor_info.go @@ -7,10 +7,11 @@ ** @Last Modified time: 2019/11/25 14:32 ** @Software: GoLand ****************************************************/ -package models +package payfor import ( "boss/common" + "boss/models/accounts" "boss/utils" "context" "errors" @@ -51,7 +52,7 @@ type PayforInfo struct { IsSend string RequestTime string ResponseTime string - ResponseContext string + ResponseContent string Remark string CreateTime string UpdateTime string @@ -69,20 +70,6 @@ func InsertPayfor(payFor PayforInfo) bool { return true } -func IsExistPayForByBankOrderId(bankOrderId string) bool { - o := orm.NewOrm() - exist := o.QueryTable(PAYFORINFO).Filter("bank_order_id", bankOrderId).Exist() - - return exist -} - -func IsExistPayForByMerchantOrderId(merchantOrderId string) bool { - o := orm.NewOrm() - exist := o.QueryTable(PAYFORINFO).Filter("merchant_order_id", merchantOrderId).Exist() - - return exist -} - func GetPayForLenByMap(params map[string]string) int { o := orm.NewOrm() qs := o.QueryTable(PAYFORINFO) @@ -149,19 +136,6 @@ func GetPayForByBankOrderId(bankOrderId string) PayforInfo { return payFor } -func GetPayForByMerchantOrderId(merchantOrderId string) PayforInfo { - o := orm.NewOrm() - var payFor PayforInfo - - _, err := o.QueryTable(PAYFORINFO).Filter("merchant_order_id", merchantOrderId).Limit(1).All(&payFor) - - if err != nil { - logs.Error("fail: ", err) - } - - return payFor -} - func ForUpdatePayFor(payFor PayforInfo) bool { o := orm.NewOrm() @@ -181,7 +155,7 @@ func ForUpdatePayFor(payFor PayforInfo) bool { if payFor.Status == common.PAYFOR_SOLVING && tmp.Status == common.PAYFOR_COMFRIM && payFor.GiveType == common.PAYFOR_HAND && payFor.Type != common.SELF_HELP { - var account AccountInfo + var account accounts.AccountInfo if err := txOrm.Raw("select * from account_info where account_uid = ? for update", payFor.MerchantUid).QueryRow(&account); err != nil || account.AccountUid == "" { logs.Error("for update payfor select account info,fail:", err) return err @@ -197,7 +171,7 @@ func ForUpdatePayFor(payFor PayforInfo) bool { } } else { logs.Error(fmt.Sprintf("商户uid=%s,可用金额不够", payFor.MerchantUid)) - payFor.ResponseContext = "商户可用余额不足" + payFor.ResponseContent = "商户可用余额不足" payFor.Status = common.PAYFOR_FAIL } } diff --git a/boss/models/road_info.go b/boss/models/road/road_info.go similarity index 99% rename from boss/models/road_info.go rename to boss/models/road/road_info.go index 10c6c6c..73f1700 100644 --- a/boss/models/road_info.go +++ b/boss/models/road/road_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/9/8 12:09 ** @Software: GoLand ****************************************************/ -package models +package road import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/road_pool_info.go b/boss/models/road/road_pool_info.go similarity index 99% rename from boss/models/road_pool_info.go rename to boss/models/road/road_pool_info.go index 0fdced9..42e959a 100644 --- a/boss/models/road_pool_info.go +++ b/boss/models/road/road_pool_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/9/9 16:35 ** @Software: GoLand ****************************************************/ -package models +package road import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/bank_card_info.go b/boss/models/system/bank_card_info.go similarity index 99% rename from boss/models/bank_card_info.go rename to boss/models/system/bank_card_info.go index ff881ea..bfa0e82 100644 --- a/boss/models/bank_card_info.go +++ b/boss/models/system/bank_card_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/9/6 10:19 ** @Software: GoLand ****************************************************/ -package models +package system import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/menu_info.go b/boss/models/system/menu_info.go similarity index 93% rename from boss/models/menu_info.go rename to boss/models/system/menu_info.go index e974db5..4d0e2fe 100644 --- a/boss/models/menu_info.go +++ b/boss/models/system/menu_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/8/21 9:33 ** @Software: GoLand ****************************************************/ -package models +package system import ( "github.com/beego/beego/v2/client/orm" @@ -119,16 +119,6 @@ func GetMenuAll() []MenuInfo { return menuInfoList } -func GetMenuOffset(displayCount, offset int) []MenuInfo { - o := orm.NewOrm() - var menuInfoList []MenuInfo - _, err := o.QueryTable(MENUINFO).Limit(displayCount, offset).All(&menuInfoList) - if err != nil { - logs.Error("get menu offset fail: ", err) - } - return menuInfoList -} - func GetMenuOffsetByMap(params map[string]string, displayCount, offset int) []MenuInfo { o := orm.NewOrm() var menuInfoList []MenuInfo diff --git a/boss/models/power_info.go b/boss/models/system/power_info.go similarity index 99% rename from boss/models/power_info.go rename to boss/models/system/power_info.go index 893a686..1dbb63e 100644 --- a/boss/models/power_info.go +++ b/boss/models/system/power_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/8/28 17:59 ** @Software: GoLand ****************************************************/ -package models +package system import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/role_info.go b/boss/models/system/role_info.go similarity index 99% rename from boss/models/role_info.go rename to boss/models/system/role_info.go index 49c7c51..84a6a41 100644 --- a/boss/models/role_info.go +++ b/boss/models/system/role_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/8/29 14:43 ** @Software: GoLand ****************************************************/ -package models +package system import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/models/second_menu_info.go b/boss/models/system/second_menu_info.go similarity index 93% rename from boss/models/second_menu_info.go rename to boss/models/system/second_menu_info.go index e1b3f87..3da84d5 100644 --- a/boss/models/second_menu_info.go +++ b/boss/models/system/second_menu_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/8/26 9:33 ** @Software: GoLand ****************************************************/ -package models +package system import ( "github.com/beego/beego/v2/client/orm" @@ -48,15 +48,6 @@ func (sm SecondMenuSlice) Less(i, j int) bool { 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 @@ -208,9 +199,3 @@ func UpdateSecondMenu(secondMenu SecondMenuInfo) { 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 -} diff --git a/boss/models/transaction.go b/boss/models/transaction.go index 9f019ee..ef5da52 100644 --- a/boss/models/transaction.go +++ b/boss/models/transaction.go @@ -11,6 +11,7 @@ package models import ( "boss/common" + "boss/models/accounts" "boss/utils" "context" "errors" @@ -25,7 +26,7 @@ func OperatorAccount(accountUid, operatorType string, amount float64) (string, b if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { //处理事务 - accountInfo := new(AccountInfo) + accountInfo := new(accounts.AccountInfo) if err := txOrm.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) return err @@ -65,7 +66,7 @@ func OperatorAccount(accountUid, operatorType string, amount float64) (string, b return err } //往account_history表中插入一条动账记录 - accountHistory := AccountHistoryInfo{AccountUid: accountUid, AccountName: accountInfo.AccountName, Type: operatorType, + accountHistory := accounts.AccountHistoryInfo{AccountUid: accountUid, AccountName: accountInfo.AccountName, Type: operatorType, Amount: amount, Balance: accountInfo.Balance, CreateTime: utils.GetBasicDateTime(), UpdateTime: utils.GetBasicDateTime()} if _, err := txOrm.Insert(&accountHistory); err != nil { diff --git a/boss/models/user_info.go b/boss/models/user/user_info.go similarity index 99% rename from boss/models/user_info.go rename to boss/models/user/user_info.go index bf5235c..70d3f2c 100644 --- a/boss/models/user_info.go +++ b/boss/models/user/user_info.go @@ -7,7 +7,7 @@ ** @Last Modified time: 2019/8/9 14:02 ** @Software: GoLand ****************************************************/ -package models +package user import ( "github.com/beego/beego/v2/client/orm" diff --git a/boss/supplier/alipay.go b/boss/supplier/alipay.go deleted file mode 100644 index b258bf9..0000000 --- a/boss/supplier/alipay.go +++ /dev/null @@ -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 ( - "boss/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 -} diff --git a/boss/supplier/consts.go b/boss/supplier/consts.go deleted file mode 100644 index 6751d91..0000000 --- a/boss/supplier/consts.go +++ /dev/null @@ -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 = "" -) diff --git a/boss/supplier/gateway_solve.go b/boss/supplier/gateway_solve.go deleted file mode 100644 index fc3d504..0000000 --- a/boss/supplier/gateway_solve.go +++ /dev/null @@ -1,48 +0,0 @@ -/*************************************************** - ** @Desc : 处理网关模块的一些需要操作数据库的功能 - ** @Time : 2019/12/7 16:40 - ** @Author : yuebin - ** @File : gateway_solve - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/12/7 16:40 - ** @Software: GoLand -****************************************************/ -package controller - -import ( - "boss/models" - "github.com/beego/beego/v2/adapter/orm" - "github.com/beego/beego/v2/core/logs" -) - -/* -* 插入支付订单记录和订单利润记录,保证一致性 - */ -func InsertOrderAndOrderProfit(orderInfo models.OrderInfo, orderProfitInfo models.OrderProfitInfo) bool { - o := orm.NewOrm() - _ = o.Begin() - - defer func(interface{}) { - if err := recover(); err != nil { - _ = o.Rollback() - } - }(o) - - if _, err := o.Insert(&orderInfo); err != nil { - logs.Error("insert orderInfo fail: ", err) - _ = o.Rollback() - return false - } - if _, err := o.Insert(&orderProfitInfo); err != nil { - logs.Error("insert orderProfit fail: ", err) - _ = o.Rollback() - return false - } - - if err := o.Commit(); err != nil { - logs.Error("insert order and orderProfit fail:", err) - } else { - logs.Info("插入order和orderProfit记录成功") - } - return true -} diff --git a/boss/supplier/init.go b/boss/supplier/init.go deleted file mode 100644 index 67356f7..0000000 --- a/boss/supplier/init.go +++ /dev/null @@ -1,32 +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 ( - "boss/common" - "github.com/beego/beego/v2/core/logs" -) - -var registerSupplier = make(map[string]PayInterface) - -//注册各种上游的支付接口 - -func Init() { - registerSupplier["KF"] = new(KuaiFuImpl) - logs.Notice(common.CheckSupplierByCode("KF")) - registerSupplier["WEIXIN"] = new(WeiXinImpl) - logs.Notice(common.CheckSupplierByCode("WEIXIN")) - registerSupplier["ALIPAY"] = new(AlipayImpl) - logs.Notice(common.CheckSupplierByCode("ALIPAY")) -} - -func GetPaySupplierByCode(code string) PayInterface { - return registerSupplier[code] -} diff --git a/boss/supplier/kuaifu.go b/boss/supplier/kuaifu.go deleted file mode 100644 index c0709c3..0000000 --- a/boss/supplier/kuaifu.go +++ /dev/null @@ -1,381 +0,0 @@ -/*************************************************** - ** @Desc : 快付支付的实现逻辑 - ** @Time : 2019/10/28 14:12 - ** @Author : yuebin - ** @File : kuaifu - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/10/28 14:12 - ** @Software: GoLand -****************************************************/ -package controller - -import ( - "boss/common" - "boss/gojson" - "boss/models" - "boss/utils" - "fmt" - "github.com/beego/beego/v2/adapter/httplib" - "github.com/beego/beego/v2/core/logs" - beego "github.com/beego/beego/v2/server/web" - "github.com/rs/xid" - "strconv" - "strings" -) - -type KuaiFuImpl struct { - beego.Controller -} - -const ( - HOST = "localhost" - KF_SCAN_HOST = "http://" + HOST + "/gateway/scanPay/payService" - KF_PAYFOR_HOST = "http://" + HOST + "/gateway/remittance/pay" - KF_BALANCE_QUERY = "http://" + HOST + "/gateway/remittance/getBalance" - KF_ORDER_QUERY = "http://" + HOST + "/gateway/scanPay/orderQuery" - KF_PAYFOR_QUERY = "http://" + HOST + "/gateway/remittance/query" - KF_PAY_KEY = "xxxxxxx" - KF_PAY_SECRET = "xxxxxx" -) - -func (c *KuaiFuImpl) Scan(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData { - payWayCode := "" - switch orderInfo.PayTypeCode { - case "ALI_SCAN": - payWayCode = "SCAN_ALIPAY" - case "WEIXIN_SCAN": - payWayCode = "SCAN_WEIXIN" - case "QQ_SCAN": - payWayCode = "SCAN_QQ" - case "UNION_SCAN": - payWayCode = "SCAN_YL" - case "BAIDU_SCAN": - case "JD_SCAN": - } - //将金额转为带有2位小数点的float - order := fmt.Sprintf("%0.2f", orderInfo.OrderAmount) - params := make(map[string]string) - params["orderNo"] = orderInfo.BankOrderId - params["productName"] = orderInfo.ShopName - params["orderPeriod"] = orderInfo.OrderPeriod - params["orderPrice"] = order - params["payWayCode"] = payWayCode - params["osType"] = orderInfo.OsType - params["notifyUrl"] = PayNotify + "KF" - params["payKey"] = KF_PAY_KEY - //params["field1"] = "field1" - - keys := utils.SortMap(params) - sign := utils.GetMD5Sign(params, keys, KF_PAY_SECRET) - params["sign"] = sign - - req := httplib.Post(KF_SCAN_HOST) - for k, v := range params { - req.Param(k, v) - } - var scanData ScanData - scanData.Supplier = orderInfo.PayProductCode - scanData.PayType = orderInfo.PayTypeCode - scanData.OrderNo = orderInfo.MerchantOrderId - scanData.BankNo = orderInfo.BankOrderId - scanData.OrderPrice = params["orderPrice"] - response, err := req.String() - if err != nil { - logs.Error("KF 请求失败:", err) - scanData.Status = "01" - scanData.Msg = gojson.Json(response).Get("statusMsg").Tostring() - return scanData - } - statusCode := gojson.Json(response).Get("statusCode").Tostring() - if statusCode != "00" { - logs.Error("KF生成扫码地址失败") - scanData.Status = "01" - scanData.Msg = "生成扫码地址失败" - return scanData - } - payUrl := gojson.Json(response).Get("payURL").Tostring() - scanData.Status = "00" - scanData.PayUrl = payUrl - scanData.Msg = "请求成功" - return scanData -} - -func (c *KuaiFuImpl) H5(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData { - var scanData ScanData - scanData.Status = "01" - return scanData -} - -func (c *KuaiFuImpl) Syt(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) ScanData { - var scanData ScanData - scanData.Status = "01" - return scanData -} - -func (c *KuaiFuImpl) Fast(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) bool { - var scanData ScanData - scanData.Status = "01" - return true -} - -func (c *KuaiFuImpl) Web(orderInfo models.OrderInfo, roadInfo models.RoadInfo, merchantInfo models.MerchantInfo) bool { - var scanData ScanData - scanData.Status = "01" - return true -} - -//支付回调 -func (c *KuaiFuImpl) PayNotify() { - params := make(map[string]string) - orderNo := strings.TrimSpace(c.GetString("orderNo")) - orderInfo := models.GetOrderByBankOrderId(orderNo) - if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 { - logs.Error("快付回调的订单号不存在,订单号=", orderNo) - c.StopRun() - } - roadInfo := models.GetRoadInfoByRoadUid(orderInfo.RoadUid) - if roadInfo.RoadUid == "" || len(roadInfo.RoadUid) == 0 { - logs.Error("支付通道已经关系或者删除,不进行回调") - c.StopRun() - } - merchantUid := orderInfo.MerchantUid - merchantInfo := models.GetMerchantByUid(merchantUid) - if merchantInfo.MerchantUid == "" || len(merchantInfo.MerchantUid) == 0 { - logs.Error("快付回调失败,该商户不存在或者已经删除,商户uid=", merchantUid) - c.StopRun() - } - paySecret := merchantInfo.MerchantSecret - params["orderNo"] = orderNo - params["orderPrice"] = strings.TrimSpace(c.GetString("orderPrice")) - params["orderTime"] = strings.TrimSpace(c.GetString("orderTime")) - params["trxNo"] = strings.TrimSpace(c.GetString("trxNo")) - params["statusCode"] = strings.TrimSpace(c.GetString("statusCode")) - params["tradeStatus"] = strings.TrimSpace(c.GetString("tradeStatus")) - params["field1"] = strings.TrimSpace(c.GetString("field1")) - params["payKey"] = strings.TrimSpace(c.GetString("payKey")) - //对参数进行验签 - keys := utils.SortMap(params) - tmpSign := utils.GetMD5Sign(params, keys, paySecret) - sign := strings.TrimSpace(c.GetString("sign")) - if tmpSign != sign { - logs.Error("快付回调签名异常,回调失败") - c.StopRun() - } - //实际支付金额 - factAmount, err := strconv.ParseFloat(params["orderPrice"], 64) - if err != nil { - logs.Error("快付回调实际金额有误, factAmount=", params["orderPrice"]) - c.StopRun() - } - orderInfo.FactAmount = factAmount - orderInfo.BankTransId = params["trxNo"] - tradeStatus := params["tradeStatus"] - paySolveController := new(PaySolveController) - if tradeStatus == "FAILED" { - if !paySolveController.SolvePayFail(orderInfo, "fail") { - logs.Error("solve order fail fail") - } - } else if tradeStatus == "CANCELED" { - if !paySolveController.SolvePayFail(orderInfo, "cancel") { - logs.Error("solve order cancel fail") - } - } else if tradeStatus == "WAITING_PAYMENT" { - logs.Notice("快付回调,该订单还处于等待支付,订单id=", orderNo) - } else if tradeStatus == "SUCCESS" { - //订单支付成功,需要搞很多事情 TODO - paySolveController.SolvePaySuccess(orderInfo.BankOrderId, orderInfo.FactAmount, c.GetString("trxNo")) - } - c.Ctx.WriteString("success") -} - -func (c *KuaiFuImpl) PayQuery(orderInfo models.OrderInfo) bool { - if orderInfo.Status != "wait" && orderInfo.Status != "" { - logs.Error("订单已经被处理,不需要查询,bankOrderId:", orderInfo.BankOrderId) - return false - } - params := make(map[string]string) - params["orderNo"] = orderInfo.BankOrderId - params["payKey"] = KF_PAY_KEY - paySecret := KF_PAY_SECRET - keys := utils.SortMap(params) - params["sign"] = utils.GetMD5Sign(params, keys, paySecret) - req := httplib.Get(KF_ORDER_QUERY) - for k, v := range params { - req.Param(k, v) - } - response, err := req.String() - if err != nil { - logs.Error("快付订单查询失败,bankOrderId: ", orderInfo.BankOrderId) - logs.Error("err: ", err) - return false - } - statusCode := gojson.Json(response).Get("statusCode").Tostring() - if statusCode != "00" { - logs.Error("快付订单查询返回失败,bankOrderId:", orderInfo.BankOrderId) - logs.Error("err: ", response) - return false - } - //获取用户的实际支付金额 - orderPrice := gojson.Json(response).Get("orderPrice").Tostring() - factAmount, err := strconv.ParseFloat(orderPrice, 64) - if err != nil { - logs.Error("快速查询得到的实际金额错误, orderPrice=", orderPrice) - } - - //orderInfo.FactAmount = orderInfo.OrderAmount - tradeStatus := gojson.Json(response).Get("tradeStatus").Tostring() - paySolveController := new(PaySolveController) - trxNo := gojson.Json(response).Get("trxNo").Tostring() - if tradeStatus == "SUCCESS" { - //调用支付成功的接口,做加款更新操作,需要把实际支付金额传入 - if !paySolveController.SolvePaySuccess(orderInfo.BankOrderId, factAmount, trxNo) { - return false - } - } else if tradeStatus == "FAILED" { - if !paySolveController.SolvePayFail(orderInfo, "fail") { - return false - } - } else { - logs.Info("订单状态处于:" + tradeStatus + ";bankOrderId:" + orderInfo.BankOrderId) - } - return true -} - -func (c *KuaiFuImpl) PayFor(payFor models.PayforInfo) string { - params := make(map[string]string) - params["merchantKey"] = KF_PAY_KEY - params["realname"] = payFor.BankAccountName - params["cardNo"] = payFor.BankAccountNo - params["bankCode"] = payFor.BankCode - if payFor.BankAccountType == common.PRIVATE { - params["accType"] = "01" - } else { - params["accType"] = "02" - } - params["province"] = payFor.BankAccountAddress - params["city"] = payFor.BankAccountAddress - params["bankAccountAddress"] = payFor.BankAccountAddress - //将float64转为字符串 - params["amount"] = strconv.FormatFloat(payFor.PayforAmount, 'f', 2, 64) - params["moblieNo"] = payFor.PhoneNo - params["merchantOrderId"] = payFor.BankOrderId - keys := utils.SortMap(params) - sign := utils.GetMD5Sign(params, keys, KF_PAY_SECRET) - params["sign"] = sign - req := httplib.Post(KF_PAYFOR_HOST) - for k, v := range params { - req.Param(k, v) - } - response, err := req.String() - if err != nil { - logs.Error("快付代付返回错误结果: ", response) - } else { - json := gojson.Json(response) - resultCode := json.Get("resultCode").Tostring() - resultMsg := json.Get("resultMsg").Tostring() - if resultCode != "00" { - logs.Error("快付代付返回错误信息:", resultMsg) - return "fail" - } - settStatus := json.Get("settStatus").Tostring() - if settStatus == "00" { - logs.Info(fmt.Sprintf("代付uid=%s,已经成功发送给了上游处理", payFor.PayforUid)) - } else if settStatus == "01" { - logs.Info(fmt.Sprintf("代付uid=%s,发送失败", payFor.PayforUid)) - } - } - return "success" -} - -func (c *KuaiFuImpl) PayForNotify() string { - return "" -} - -func (c *KuaiFuImpl) PayForQuery(payFor models.PayforInfo) (string, string) { - params := make(map[string]string) - params["merchantKey"] = KF_PAY_KEY - params["timestamp"] = utils.GetNowTimesTamp() - params["merchantOrderId"] = payFor.BankOrderId - keys := utils.SortMap(params) - sign := utils.GetMD5Sign(params, keys, KF_PAY_SECRET) - params["sign"] = sign - req := httplib.Get(KF_PAYFOR_QUERY) - for k, v := range params { - req.Param(k, v) - } - response, err := req.String() - if err != nil { - logs.Error("快付代付查询失败:", err) - return common.PAYFOR_SOLVING, "查询失败" - } - - payFor.ResponseContext = response - payFor.ResponseTime = utils.GetBasicDateTime() - payFor.UpdateTime = utils.GetBasicDateTime() - if !models.UpdatePayFor(payFor) { - logs.Error("更新快付代付订单状态失败") - } - - resultCode := gojson.Json(response).Get("resultCode").Tostring() - resultMsg := gojson.Json(response).Get("resultMsg").Tostring() - - if resultCode != "00" { - logs.Error("快付代付查询返回错误:", resultMsg) - return common.PAYFOR_SOLVING, resultMsg - } - - logs.Info("快付代付查询返回结果:", resultMsg) - - merchantOrderId := gojson.Json(response).Get("merchantOrderId").Tostring() - if merchantOrderId != payFor.BankOrderId { - logs.Error("快付代付返回结果,订单id不一致: ", merchantOrderId) - return common.PAYFOR_SOLVING, "快付代付返回结果,订单id不一致" - } - - settStatus := gojson.Json(response).Get("settStatus").Tostring() - - if settStatus == "00" { - return common.PAYFOR_SUCCESS, "代付成功" - } else if settStatus == "01" { - return common.PAYFOR_FAIL, "代付失败" - } else { - return common.PAYFOR_BANKING, "银行处理中" - } -} - -func (c *KuaiFuImpl) BalanceQuery(roadInfo models.RoadInfo) float64 { - params := make(map[string]string) - params["merchantKey"] = KF_PAY_KEY - params["timestamp"] = utils.GetNowTimesTamp() - params["merchantOrderId"] = xid.New().String() - keys := utils.SortMap(params) - sign := utils.GetMD5Sign(params, keys, KF_PAY_SECRET) - params["sign"] = sign - req := httplib.Get(KF_BALANCE_QUERY) - for k, v := range params { - req.Param(k, v) - } - - response, err := req.String() - if err != nil { - logs.Error("快付余额查询失败,err: ", err) - return 0.00 - } - logs.Debug("快付余额查询返回:", response) - - resultCode := gojson.Json(response).Get("resultCode").Tostring() - resultMsg := gojson.Json(response).Get("resultMsg").Tostring() - logs.Notice("快付返回信息:", resultMsg) - - if resultCode != "00" { - return 0.00 - } - - balance := gojson.Json(response).Get("balance").Tostring() - availableAmount := gojson.Json(response).Get("availableAmount").Tostring() - - logs.Info(fmt.Sprintf("快付余额=%s,可用金额=%s", balance, availableAmount)) - - f, err := strconv.ParseFloat(availableAmount, 64) - return f -} diff --git a/boss/supplier/order_settle.go b/boss/supplier/order_settle.go deleted file mode 100644 index 1d47dd0..0000000 --- a/boss/supplier/order_settle.go +++ /dev/null @@ -1,192 +0,0 @@ -/*************************************************** - ** @Desc : 订单结算,将订单上面的钱加入到账户余额中 - ** @Time : 2019/11/22 11:34 - ** @Author : yuebin - ** @File : order_settle - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/11/22 11:34 - ** @Software: GoLand -****************************************************/ -package controller - -import ( - "boss/common" - "boss/models" - "boss/utils" - "context" - "errors" - "fmt" - "github.com/beego/beego/v2/client/orm" - "github.com/beego/beego/v2/core/logs" - "time" -) - -//订单结算,将那些支付成功的订单金额加入到商户账户的结算金额中 -func OrderSettle() { - - params := make(map[string]string) - params["is_allow_settle"] = common.YES - params["is_complete_settle"] = common.NO - orderSettleList := models.GetOrderSettleListByParams(params) - for _, orderSettle := range orderSettleList { - orderProfitInfo := models.GetOrderProfitByBankOrderId(orderSettle.BankOrderId) - if !settle(orderSettle, orderProfitInfo) { - logs.Error(fmt.Sprintf("结算订单bankOrderId=%s, 执行失败", orderSettle.BankOrderId)) - } else { - logs.Info(fmt.Sprintf("结算订单bankOrderId=%s,执行成功", orderSettle.BankOrderId)) - } - } -} - -func settle(orderSettle models.OrderSettleInfo, orderProfit models.OrderProfitInfo) bool { - o := orm.NewOrm() - - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - tmpSettle := new(models.OrderSettleInfo) - - if err := txOrm.Raw("select * from order_settle_info where bank_order_id=? for update", orderSettle.BankOrderId).QueryRow(tmpSettle); err != nil || tmpSettle == nil { - logs.Error("获取tmpSettle失败,bankOrderId=%s", orderSettle.BankOrderId) - return err - } - - tmpSettle.UpdateTime = utils.GetBasicDateTime() - tmpSettle.IsCompleteSettle = common.YES - - if _, err := txOrm.Update(tmpSettle); err != nil { - logs.Error("更新tmpSettle失败,错误:", err) - return err - } - - accountInfo := new(models.AccountInfo) - - if err := txOrm.Raw("select * from account_info where account_uid=? for update", orderSettle.MerchantUid).QueryRow(accountInfo); err != nil || accountInfo == nil { - logs.Error("结算select account info失败,错误信息:", err) - return err - } - - accountInfo.UpdateTime = utils.GetBasicDateTime() - accountInfo.SettleAmount += orderProfit.FactAmount - - if _, err := txOrm.Update(accountInfo); err != nil { - logs.Error("结算update account 失败,错误信息:", err) - return err - } - - merchantDeployInfo := models.GetMerchantDeployByUidAndPayType(accountInfo.AccountUid, orderSettle.PayTypeCode) - if merchantDeployInfo.IsLoan == common.YES { - loadAmount := merchantDeployInfo.LoanRate * 0.01 * orderProfit.FactAmount - date := utils.GetDate() - params := make(map[string]string) - params["merchant_uid"] = tmpSettle.MerchantUid - params["road_uid"] = tmpSettle.RoadUid - params["load_date"] = date - - if !models.IsExistMerchantLoadByParams(params) { - tmp := models.MerchantLoadInfo{Status: common.NO, MerchantUid: orderSettle.MerchantUid, RoadUid: orderSettle.RoadUid, - LoadDate: date, LoadAmount: loadAmount, UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if _, err := txOrm.Insert(tmp); err != nil { - logs.Error("結算插入merchantLoad失敗,失败信息:", err) - return err - } else { - logs.Info("结算插入新的merchantLoad信息成功") - } - } else { - merchantLoad := new(models.MerchantLoadInfo) - if err := txOrm.Raw("select * from merchant_load_info where merchant_uid=? and road_uid=? and load_date=? for update"). - QueryRow(merchantLoad); err != nil || merchantLoad == nil { - logs.Error(fmt.Sprintf("结算过程,select merchant load info失败,错误信息:%s", err)) - return err - } else { - merchantLoad.UpdateTime = utils.GetBasicDateTime() - merchantLoad.LoadAmount = merchantLoad.LoadAmount + loadAmount - if _, err := txOrm.Update(merchantLoad); err != nil { - logs.Error(fmt.Sprintf("结算过程,update merchant load info失败,失败信息:%s", err)) - return err - } - } - } - } else { - logs.Info(fmt.Sprintf("结算过程中,该商户不需要押款,全款结算")) - } - return nil - - }); err != nil { - return false - } - return true -} - -/* -* 商户的押款释放处理,根据商户的押款时间进行处理 - */ -func MerchantLoadSolve() { - hour := time.Now().Hour() - merchantDeployList := models.GetMerchantDeployByHour(hour) - for _, merchantDeploy := range merchantDeployList { - logs.Info(fmt.Sprintf("开始执行商户uid=%s,进行解款操作", merchantDeploy.MerchantUid)) - - loadDate := utils.GetDateBeforeDays(merchantDeploy.LoanDays) - params := make(map[string]string) - params["status"] = common.NO - params["merchant_uid"] = merchantDeploy.MerchantUid - params["load_date"] = loadDate - - merchantLoadList := models.GetMerchantLoadInfoByMap(params) - for _, merchantLoad := range merchantLoadList { - if MerchantAbleAmount(merchantLoad) { - logs.Info(fmt.Sprintf("商户uid=%s,押款金额=%f,押款通道=%s, 解款成功", merchantLoad.MerchantUid, merchantLoad.LoadAmount, merchantLoad.RoadUid)) - } else { - logs.Error(fmt.Sprintf("商户uid=%s,押款金额=%f,押款通道=%s, 解款失败", merchantLoad.MerchantUid, merchantLoad.LoadAmount, merchantLoad.RoadUid)) - } - } - } -} - -/* -* 对应的商户的账户可用金额进行调整操作 - */ -func MerchantAbleAmount(merchantLoad models.MerchantLoadInfo) bool { - o := orm.NewOrm() - - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - tmpLoad := new(models.MerchantLoadInfo) - - if err := txOrm.Raw("select * from merchant_load_info where merchant_uid=? and road_uid=? and load_date=? for update", - merchantLoad.MerchantUid, merchantLoad.RoadUid, merchantLoad.LoadDate).QueryRow(tmpLoad); err != nil || tmpLoad == nil { - logs.Error(fmt.Sprintf("解款操作获取商户押款信息失败,fail: %s", err)) - return err - - } - if tmpLoad.Status != common.NO { - logs.Error(fmt.Sprintf("押款信息merchantuid=%s,通道uid=%s, 押款日期=%s,已经解款过,不需要再进行处理了", tmpLoad.MerchantUid, tmpLoad.RoadUid, tmpLoad.LoadDate)) - return errors.New("已经解款过,不需要再进行处理了") - } - - tmpLoad.UpdateTime = utils.GetBasicDateTime() - tmpLoad.Status = common.YES - - if _, err := txOrm.Update(tmpLoad); err != nil { - logs.Error(fmt.Sprintf("解款操作更新merchant load info 失败:%s", err)) - return err - } - - accountInfo := new(models.AccountInfo) - accountInfo.UpdateTime = utils.GetBasicDateTime() - if accountInfo.LoanAmount >= tmpLoad.LoadAmount { - accountInfo.LoanAmount -= tmpLoad.LoadAmount - } else { - accountInfo.LoanAmount = common.ZERO - } - - if _, err := txOrm.Update(accountInfo); err != nil { - logs.Error(fmt.Sprintf("解款操作更新account info 失败:%s,账户uid=%s", err, accountInfo.AccountUid)) - return err - } - - return nil - }); err != nil { - return false - } - return true -} diff --git a/boss/supplier/pay_solve.go b/boss/supplier/pay_solve.go deleted file mode 100644 index 2567531..0000000 --- a/boss/supplier/pay_solve.go +++ /dev/null @@ -1,489 +0,0 @@ -/*************************************************** - ** @Desc : 处理订单状态,用户加款等核心业务 - ** @Time : 2019/10/31 11:44 - ** @Author : yuebin - ** @File : pay_solve - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/10/31 11:44 - ** @Software: GoLand -****************************************************/ -package controller - -import ( - "boss/common" - "boss/message_queue" - "boss/models" - "boss/utils" - "context" - "errors" - "fmt" - "github.com/beego/beego/v2/client/orm" - "github.com/beego/beego/v2/core/logs" - url2 "net/url" - "strconv" -) - -type PaySolveController struct { -} - -//处理支付成功的加款等各项操作 -func (c *PaySolveController) SolvePaySuccess(bankOrderId string, factAmount float64, trxNo string) bool { - - o := orm.NewOrm() - - err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - - var orderInfo models.OrderInfo - if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(&orderInfo); err != nil || orderInfo.BankOrderId == "" { - logs.Error("不存在该订单,或者select for update出错") - return err - } - - if orderInfo.Status != "wait" { - logs.Error("该订单已经处理,订单号=", bankOrderId) - return errors.New(fmt.Sprintf("该订单已经处理,订单号= %s", bankOrderId)) - } - - if factAmount <= common.ZERO { - factAmount = orderInfo.OrderAmount - } - - var orderProfitInfo models.OrderProfitInfo - if err := txOrm.Raw("select * from order_profit_info where bank_order_id = ? for update", bankOrderId).QueryRow(&orderProfitInfo); err != nil || orderProfitInfo.BankOrderId == "" { - logs.Error("select order_profit_info for update fail: ", err) - return err - } - - if orderProfitInfo.BankOrderId == "" { - logs.Error("solve pay success, get orderProfit fail, bankOrderId = ", bankOrderId) - return errors.New(fmt.Sprintf("solve pay success, get orderProfit fail, bankOrderId = %s", bankOrderId)) - } - - comp := c.CompareOrderAndFactAmount(factAmount, orderInfo) - //如果实际支付金额比订单金额大或者小,那么重新按照实际金额金额利润计算 - if comp != 0 { - orderProfitInfo.FactAmount = factAmount - orderProfitInfo.SupplierProfit = orderInfo.FactAmount * orderProfitInfo.SupplierRate - orderProfitInfo.PlatformProfit = orderInfo.FactAmount * orderProfitInfo.PlatformRate - orderProfitInfo.AgentProfit = orderInfo.FactAmount * orderProfitInfo.AgentRate - orderProfitInfo.AllProfit = orderProfitInfo.SupplierProfit + orderProfitInfo.PlatformProfit + orderProfitInfo.AgentProfit - orderProfitInfo.UserInAmount = orderProfitInfo.FactAmount - orderProfitInfo.AllProfit - orderProfitInfo.UpdateTime = utils.GetBasicDateTime() - - orderInfo.FactAmount = factAmount - //如果实际支付金额跟订单金额有出入,那么需要重新更新利润记录 - if _, err := txOrm.Update(orderProfitInfo); err != nil { - logs.Info("solve pay success fail:", err) - return err - } - } - - orderInfo.Status = common.SUCCESS - orderInfo.BankTransId = trxNo - orderInfo.UpdateTime = utils.GetBasicDateTime() - if _, err := txOrm.Update(&orderInfo); err != nil || orderInfo.BankOrderId == "" { - logs.Error(fmt.Sprintf("solve pay success, update order info fail: %s, bankOrderId = %s", err, bankOrderId)) - return err - } - - //插入一条待结算记录 - settAmount := orderProfitInfo.FactAmount - orderProfitInfo.SupplierProfit - orderProfitInfo.PlatformProfit - orderProfitInfo.AgentProfit - if settAmount <= 0.00 { - logs.Error(fmt.Sprintf("订单id=%s,计算利润存在异常", bankOrderId)) - return errors.New(fmt.Sprintf("订单id=%s,计算利润存在异常", bankOrderId)) - } - orderSettleInfo := models.OrderSettleInfo{PayTypeCode: orderInfo.PayTypeCode, PayProductCode: orderInfo.PayProductCode, RoadUid: orderInfo.RoadUid, - PayProductName: orderInfo.PayProductName, PayTypeName: orderInfo.PayTypeName, MerchantUid: orderInfo.MerchantUid, MerchantOrderId: orderInfo.MerchantOrderId, - MerchantName: orderInfo.MerchantName, BankOrderId: bankOrderId, SettleAmount: settAmount, IsAllowSettle: common.YES, - IsCompleteSettle: common.NO, UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if _, err := txOrm.Insert(&orderSettleInfo); err != nil { - logs.Error(fmt.Sprintf("solve pay success,insert order settle info fail: %s, bankOrderId = %s", err, bankOrderId)) - return err - } - - //做账户的加款操作,最重要的一部 - var accountInfo models.AccountInfo - if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(&accountInfo); err != nil || accountInfo.AccountUid == "" { - logs.Error(fmt.Sprintf("solve pay success, raw account info fail: %s, bankOrderId = %s", err, bankOrderId)) - return err - } - if _, err := txOrm.QueryTable(models.ACCOUNT_INFO).Filter("account_uid", orderInfo.MerchantUid). - Update((orm.Params{"balance": accountInfo.Balance + settAmount, "wait_amount": accountInfo.WaitAmount + settAmount})); err != nil { - logs.Error(fmt.Sprintf("solve pay success, update account info fail: %s, bankOrderId = %s", err, bankOrderId)) - return err - } - - //添加一条动账记录 - accountHistory := models.AccountHistoryInfo{AccountUid: orderInfo.MerchantUid, AccountName: orderInfo.MerchantName, - Type: common.PLUS_AMOUNT, Amount: settAmount, Balance: accountInfo.Balance + settAmount, - UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - if _, err := txOrm.Insert(&accountHistory); err != nil { - logs.Error(fmt.Sprintf("solve pay success,insert account history fail:%s, bankOrderId = %s", err, bankOrderId)) - return err - } - - //更新通道信息 - roadInfo := models.GetRoadInfoByRoadUid(orderInfo.RoadUid) - roadInfo.UpdateTime = utils.GetBasicDateTime() - roadInfo.RequestSuccess += 1 - roadInfo.TotalIncome += orderInfo.FactAmount - roadInfo.TodayIncome += orderInfo.FactAmount - roadInfo.TodayProfit += orderProfitInfo.PlatformProfit + orderProfitInfo.AgentProfit - roadInfo.TotalProfit += orderProfitInfo.PlatformProfit + orderProfitInfo.AgentProfit - roadInfo.UpdateTime = utils.GetBasicDateTime() - if _, err := txOrm.Update(&roadInfo); err != nil { - logs.Error(fmt.Sprintf("solve pay success, update road info fail: %s, bankOrderId = %s", err, bankOrderId)) - return err - } - - //更新订单利润表 - orderProfitInfo.Status = common.SUCCESS - orderProfitInfo.UpdateTime = utils.GetBasicDateTime() - if _, err := txOrm.Update(&orderProfitInfo); err != nil { - logs.Error(fmt.Sprintf("solve pay success, update order profit info fail: %s, bankOrderId = %s", err, bankOrderId)) - return err - } - - // 给下游发送回调通知 - go c.CreateOrderNotifyInfo(orderInfo, common.SUCCESS) - - return nil - }) - - if err != nil { - logs.Error("SolvePaySuccess失败:", err) - return false - } - - logs.Info("SolvePaySuccess处理成功") - return true -} - -//处理支付失败 -func (c *PaySolveController) SolvePayFail(orderInfo models.OrderInfo, str string) bool { - o := orm.NewOrm() - err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - - var orderTmp models.OrderInfo - bankOrderId := orderInfo.BankOrderId - if err := txOrm.Raw("select * from order_info where bank_order_id = ?", bankOrderId).QueryRow(&orderTmp); err != nil || orderTmp.BankOrderId == "" { - return err - } - - if orderTmp.Status != "wait" { - return errors.New("订单已经处理,不要重复加款") - } - if _, err := txOrm.QueryTable(models.ORDER_INFO).Filter("bank_order_id", bankOrderId).Update(orm.Params{"status": str, "bank_trans_id": orderInfo.BankTransId}); err != nil { - logs.Error("更改订单状态失败:", err) - return err - } - if _, err := txOrm.QueryTable(models.ORDER_PROFIT_INFO).Filter("bank_order_id", bankOrderId).Update(orm.Params{"status": str, "bank_trans_id": orderInfo.BankTransId}); err != nil { - logs.Error("更改订单状态失败:", err) - return err - } - - go c.CreateOrderNotifyInfo(orderInfo, common.FAIL) - - return nil - }) - - if err != nil { - logs.Error("SolvePayFail:", err) - return false - } - - logs.Info("SolvePayFail成功") - return true -} - -//处理订单冻结 -func (c *PaySolveController) SolveOrderFreeze(bankOrderId string) bool { - o := orm.NewOrm() - - err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - - var orderInfo models.OrderInfo - if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(&orderInfo); err != nil || orderInfo.BankOrderId == "" { - logs.Error("solve order freeze 不存在这样的订单记录,bankOrderId = ", bankOrderId) - return err - } - - if orderInfo.Status != common.SUCCESS { - logs.Error("非成功订单不能进行冻结") - return errors.New("非成功订单不能进行冻结") - } - - orderInfo.Freeze = common.YES - orderInfo.FreezeTime = utils.GetBasicDateTime() - orderInfo.UpdateTime = utils.GetBasicDateTime() - if _, err := txOrm.Update(&orderInfo); err != nil { - logs.Error("solve order freeze fail: ", err) - return err - } - - //账户的冻结金额里面加入相应的金额 - orderProfitInfo := models.GetOrderProfitByBankOrderId(bankOrderId) - var accountInfo models.AccountInfo - if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(&accountInfo); err != nil || accountInfo.AccountUid == "" { - logs.Error(fmt.Sprintf("solve pay fail select acount fail:%s", err)) - return err - } - accountInfo.UpdateTime = utils.GetBasicDateTime() - accountInfo.FreezeAmount = accountInfo.FreezeAmount + orderProfitInfo.UserInAmount - if _, err := txOrm.Update(&accountInfo); err != nil { - logs.Error("solve order freeze fail: ", err) - return err - } - //插入一条动账记录 - accountHistoryInfo := models.AccountHistoryInfo{AccountName: accountInfo.AccountName, AccountUid: accountInfo.AccountUid, - Type: common.FREEZE_AMOUNT, Amount: orderProfitInfo.UserInAmount, Balance: accountInfo.Balance, UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - if _, err := txOrm.Insert(&accountHistoryInfo); err != nil { - logs.Error("solve order freeze fail: ", err) - return err - } - - return nil - }) - - if err != nil { - logs.Error("SolveOrderFreeze:", err) - return false - } - - logs.Info("SolveOrderFreeze") - - return true -} - -//订单解冻 -func (c *PaySolveController) SolveOrderUnfreeze(bankOrderId string) bool { - o := orm.NewOrm() - - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - - orderInfo := new(models.OrderInfo) - if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(orderInfo); err != nil || orderInfo.BankOrderId == "" { - logs.Error("solve order unfreeze 不存在这样的订单记录,bankOrderId = ", bankOrderId) - return err - } - - orderInfo.Freeze = "" - orderInfo.Unfreeze = common.YES - orderInfo.UnfreezeTime = utils.GetBasicDateTime() - orderInfo.UpdateTime = utils.GetBasicDateTime() - if _, err := txOrm.Update(orderInfo); err != nil { - logs.Error("solve order unfreeze fail: ", err) - return err - } - - orderProfitInfo := models.GetOrderProfitByBankOrderId(bankOrderId) - - accountInfo := new(models.AccountInfo) - if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(accountInfo); err != nil || accountInfo.AccountUid == "" { - logs.Error(fmt.Sprintf("unfreeze select account fail: %s", err)) - return err - } - accountInfo.UpdateTime = utils.GetBasicDateTime() - accountInfo.FreezeAmount = accountInfo.FreezeAmount - orderProfitInfo.UserInAmount - - if _, err := txOrm.Update(accountInfo); err != nil { - logs.Error("solve order unfreeze fail: ", err) - return err - } - - accountHistoryInfo := models.AccountHistoryInfo{AccountUid: accountInfo.AccountUid, AccountName: accountInfo.AccountName, Type: common.UNFREEZE_AMOUNT, - Amount: orderProfitInfo.UserInAmount, Balance: accountInfo.Balance, UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if _, err := txOrm.Insert(&accountHistoryInfo); err != nil { - return err - } - - return nil - }); err != nil { - logs.Error("SolveOrderUnfreeze失败:", err) - return false - } - - return true -} - -func (c *PaySolveController) SolveRefund(bankOrderId string) bool { - o := orm.NewOrm() - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - - orderInfo := new(models.OrderInfo) - if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(orderInfo); err != nil || orderInfo.BankOrderId == "" { - logs.Error("solve refund 不存在这样的订单,bankOrderId = " + bankOrderId) - return err - } - - orderInfo.UpdateTime = utils.GetBasicDateTime() - orderInfo.Refund = common.YES - orderInfo.RefundTime = utils.GetBasicDateTime() - - orderProfitInfo := models.GetOrderProfitByBankOrderId(bankOrderId) - account := new(models.AccountInfo) - if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(account); err != nil || account.AccountUid == "" { - return err - } - - account.UpdateTime = utils.GetBasicDateTime() - account.SettleAmount = account.SettleAmount - orderProfitInfo.UserInAmount - account.Balance = account.Balance - orderProfitInfo.UserInAmount - - if orderInfo.Freeze == common.YES { - account.FreezeAmount = account.FreezeAmount - orderProfitInfo.UserInAmount - if account.FreezeAmount < 0 { - account.FreezeAmount = common.ZERO - } - orderInfo.Freeze = "" - } - - if _, err := txOrm.Update(orderInfo); err != nil { - logs.Error("solve order refund update order info fail: ", err) - return err - } - if _, err := txOrm.Update(account); err != nil { - logs.Error("solve order refund update account fail: ", err) - return err - } - - accountHistoryInfo := models.AccountHistoryInfo{AccountName: account.AccountName, AccountUid: account.AccountUid, - Type: common.REFUND, Amount: orderProfitInfo.UserInAmount, Balance: account.Balance, - UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if _, err := txOrm.Insert(&accountHistoryInfo); err != nil { - logs.Error("solve order refund insert account history fail: ", err) - return err - } - - return nil - }); err != nil { - logs.Error("SolveRefund 成功:", err) - return false - } - return true -} - -func (c *PaySolveController) SolveOrderRoll(bankOrderId string) bool { - o := orm.NewOrm() - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - - orderInfo := new(models.OrderInfo) - - if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(orderInfo); err != nil { - logs.Error("solve order roll fail: ", err) - return err - } - - if orderInfo.Status != common.SUCCESS { - logs.Error("solve order roll 订单不存在或者订单状态不是success, bankOrderId=", bankOrderId) - return errors.New("solve order roll failed") - } - orderInfo.UpdateTime = utils.GetBasicDateTime() - - orderProfitInfo := models.GetOrderProfitByBankOrderId(bankOrderId) - - account := new(models.AccountInfo) - if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(account); err != nil || account.AccountUid == "" { - return err - } - - account.UpdateTime = utils.GetBasicDateTime() - if orderInfo.Refund == common.YES { - account.Balance = account.Balance + orderProfitInfo.UserInAmount - account.SettleAmount = account.SettleAmount + orderProfitInfo.UserInAmount - orderInfo.Refund = common.NO - } - - if _, err := txOrm.Update(orderInfo); err != nil { - logs.Error("solve order roll fail update order info fail: ", err) - return err - } - if _, err := txOrm.Update(account); err != nil { - logs.Error("solve order roll update account fail: ", err) - return err - } - - accountHistoryInfo := models.AccountHistoryInfo{AccountUid: account.AccountUid, AccountName: account.AccountName, - Type: common.PLUS_AMOUNT, Amount: orderProfitInfo.UserInAmount, Balance: account.Balance, - UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if _, err := txOrm.Insert(&accountHistoryInfo); err != nil { - logs.Error("solve order roll insert account history fail: ", err) - return err - } - - return nil - - }); err != nil { - logs.Error("SolveOrderRoll处理失败:", err) - return false - } - - return true -} - -//比较订单金额和实际支付金额的大小 -func (c *PaySolveController) CompareOrderAndFactAmount(factAmount float64, orderInfo models.OrderInfo) int { - orderAmount := orderInfo.OrderAmount - //将金额放大1000倍 - oa := int64(orderAmount * 1000) - fa := int64(factAmount * 1000) - if oa > fa { - //如果实际金额大,返回1 - return 1 - } else if oa == fa { - return 0 - } else { - return 2 - } -} - -//支付完成后,处理给商户的回调信息 -func (c *PaySolveController) CreateOrderNotifyInfo(orderInfo models.OrderInfo, tradeStatus string) { - - notifyInfo := new(models.NotifyInfo) - notifyInfo.Type = "order" - notifyInfo.BankOrderId = orderInfo.BankOrderId - notifyInfo.MerchantOrderId = orderInfo.MerchantOrderId - notifyInfo.Status = "wait" - notifyInfo.Times = 0 - notifyInfo.UpdateTime = utils.GetBasicDateTime() - notifyInfo.CreateTime = utils.GetBasicDateTime() - - merchantInfo := models.GetMerchantByUid(orderInfo.MerchantUid) - - params := make(map[string]string) - params["orderNo"] = orderInfo.MerchantOrderId - params["orderPrice"] = strconv.FormatFloat(orderInfo.OrderAmount, 'f', 2, 64) - params["factPrice"] = strconv.FormatFloat(orderInfo.FactAmount, 'f', 2, 64) - params["orderTime"] = utils.GetDateTimeNot() - - if orderInfo.BankTransId != "" { - params["trxNo"] = orderInfo.BankTransId - } else { - params["trxNo"] = orderInfo.BankOrderId - } - params["statusCode"] = "00" - params["tradeStatus"] = tradeStatus - params["payKey"] = merchantInfo.MerchantKey - - params["sign"] = utils.GetMD5Sign(params, utils.SortMap(params), merchantInfo.MerchantSecret) - - url := url2.Values{} - for k, v := range params { - url.Add(k, v) - } - - notifyInfo.Url = orderInfo.NotifyUrl + "?" + url.Encode() - - if models.InsertNotifyInfo(*notifyInfo) { - logs.Info(fmt.Sprintf("订单bankOrderId=%s,已经将回调地址插入数据库", orderInfo.BankOrderId)) - } else { - logs.Error(fmt.Sprintf("订单bankOrderId=%s,插入回调数据库失败", orderInfo.BankOrderId)) - } - //将订单发送到消息队列,给下面的商户进行回调 - message_queue.SendMessage(common.MqOrderNotify, orderInfo.BankOrderId) -} diff --git a/boss/supplier/payfor_solve.go b/boss/supplier/payfor_solve.go deleted file mode 100644 index 46f410e..0000000 --- a/boss/supplier/payfor_solve.go +++ /dev/null @@ -1,350 +0,0 @@ -/*************************************************** - ** @Desc : 代付处理 - ** @Time : 2019/11/28 18:52 - ** @Author : yuebin - ** @File : payfor_solve - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/11/28 18:52 - ** @Software: GoLand -****************************************************/ -package controller - -import ( - "boss/common" - "boss/message_queue" - "boss/models" - "boss/utils" - "context" - "errors" - "fmt" - "github.com/beego/beego/v2/client/orm" - "github.com/beego/beego/v2/core/logs" - "strings" -) - -func PayForFail(payFor models.PayforInfo) bool { - - o := orm.NewOrm() - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - - var tmpForPay models.PayforInfo - if err := txOrm.Raw("select * from payfor_info where bank_order_id = ? for update", payFor.BankOrderId).QueryRow(&tmpForPay); err != nil || tmpForPay.PayforUid == "" { - logs.Error("solve pay fail select fail:", err) - return err - } - - if tmpForPay.Status == common.PAYFOR_FAIL || tmpForPay.Status == common.PAYFOR_SUCCESS { - logs.Error(fmt.Sprintf("该代付订单uid=%s,状态已经是最终结果", payFor.PayforUid)) - return errors.New("状态已经是最终结果") - } - //更新payfor记录的状态 - tmpForPay.Status = common.PAYFOR_FAIL - tmpForPay.UpdateTime = utils.GetBasicDateTime() - if _, err := txOrm.Update(&tmpForPay); err != nil { - logs.Error("PayForFail update payfor_info fail: ", err) - return err - } - - var account models.AccountInfo - if err := txOrm.Raw("select * from account_info where account_uid = ? for update", payFor.MerchantUid).QueryRow(&account); err != nil || account.AccountUid == "" { - logs.Error("payfor select account fail:", err) - return err - } - account.UpdateTime = utils.GetBasicDateTime() - if account.PayforAmount < (payFor.PayforAmount + payFor.PayforFee) { - logs.Error(fmt.Sprintf("商户uid=%s,账户中待代付金额小于代付记录的金额", payFor.MerchantUid)) - return errors.New("账户中待代付金额小于代付记录的金额") - } - //将正在打款中的金额减去 - account.PayforAmount = account.PayforAmount - payFor.PayforAmount - payFor.PayforFee - - if _, err := txOrm.Update(&account); err != nil { - logs.Error("PayForFail update account fail: ", err) - return err - } - - return nil - - }); err != nil { - return false - } - return true -} - -func PayForSuccess(payFor models.PayforInfo) bool { - o := orm.NewOrm() - - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - var tmpPayFor models.PayforInfo - if err := txOrm.Raw("select * from payfor_info where bank_order_id = ? for update", payFor.BankOrderId).QueryRow(&tmpPayFor); err != nil || tmpPayFor.PayforUid == "" { - logs.Error("payfor success select payfor fail:", err) - return err - } - if tmpPayFor.Status == common.PAYFOR_FAIL || tmpPayFor.Status == common.PAYFOR_SUCCESS { - logs.Error(fmt.Sprintf("该代付订单uid=%s,已经是最终结果,不需要处理", payFor.PayforUid)) - return errors.New("已经是最终结果,不需要处理") - } - tmpPayFor.UpdateTime = utils.GetBasicDateTime() - tmpPayFor.Status = common.PAYFOR_SUCCESS - _, err := txOrm.Update(&tmpPayFor) - if err != nil { - logs.Error("PayForSuccess update payfor fail: ", err) - return err - } - - var account models.AccountInfo - if err := txOrm.Raw("select * from account_info where account_uid = ? for update", payFor.MerchantUid).QueryRow(&account); err != nil || account.AccountUid == "" { - logs.Error("payfor success select account fail:", err) - return err - } - - account.UpdateTime = utils.GetBasicDateTime() - if account.PayforAmount < (payFor.PayforAmount + payFor.PayforFee) { - logs.Error(fmt.Sprintf("商户uid=%s,账户中待代付金额小于代付记录的金额", payFor.MerchantUid)) - return errors.New("账户中待代付金额小于代付记录的金额") - } - - //代付打款中的金额减去 - account.PayforAmount = account.PayforAmount - payFor.PayforAmount - payFor.PayforFee - //减去余额,减去可用金额 - account.Balance = account.Balance - payFor.PayforAmount - payFor.PayforFee - //已结算金额减去 - account.SettleAmount = account.SettleAmount - payFor.PayforAmount - payFor.PayforFee - - if _, err := txOrm.Update(&account); err != nil { - logs.Error("PayForSuccess udpate account fail:", err) - return err - } - - //添加一条动账记录 - accountHistory := models.AccountHistoryInfo{AccountUid: payFor.MerchantUid, AccountName: payFor.MerchantName, - Type: common.SUB_AMOUNT, Amount: payFor.PayforAmount + payFor.PayforFee, Balance: account.Balance, - UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} - - if _, err := txOrm.Insert(&accountHistory); err != nil { - logs.Error("PayForSuccess insert account history fail: ", err) - return err - } - - return nil - }); err != nil { - return false - } - - return true -} - -/* -* 自动审核代付订单 - */ -func SolvePayForConfirm() { - params := make(map[string]string) - beforeOneDay := utils.GetDateTimeBeforeDays(1) - nowDate := utils.GetBasicDateTime() - params["create_time__lte"] = beforeOneDay - params["create_time__gte"] = nowDate - params["status"] = common.PAYFOR_COMFRIM - payForList := models.GetPayForListByParams(params) - for _, p := range payForList { - if p.Type == common.SELF_HELP || p.Type == common.SELF_MERCHANT { - //系统后台提交的,人工审核 - continue - } - //判断商户是否开通了自动代付功能 - merchant := models.GetMerchantByUid(p.MerchantUid) - //判断商户是否开通了自动代付 - if merchant.AutoPayFor == common.NO || merchant.AutoPayFor == "" { - logs.Notice(fmt.Sprintf("该商户uid=%s, 没有开通自动代付功能", p.MerchantUid)) - continue - } - //找自动代付通道 - findPayForRoad(p, merchant) - } -} - -func findPayForRoad(payFor models.PayforInfo, merchant models.MerchantInfo) bool { - //检查是否单独填写了每笔代付的手续费 - if merchant.PayforFee > common.ZERO { - logs.Info(fmt.Sprintf("商户uid=%s,有单独的代付手续费。", merchant.MerchantUid)) - payFor.PayforFee = merchant.PayforFee - payFor.PayforTotalAmount = payFor.PayforFee + payFor.PayforAmount - } - - if merchant.SinglePayForRoadUid != "" { - payFor.RoadUid = merchant.SinglePayForRoadUid - payFor.RoadName = merchant.SinglePayForRoadName - } else { - //到轮询里面寻找代付通道 - if merchant.RollPayForRoadCode == "" { - logs.Notice(fmt.Sprintf("该商户没有配置代付通道")) - return false - } - roadPoolInfo := models.GetRoadPoolByRoadPoolCode(merchant.RollPayForRoadCode) - roadUids := strings.Split(roadPoolInfo.RoadUidPool, "||") - roadInfoList := models.GetRoadInfosByRoadUids(roadUids) - if len(roadUids) == 0 || len(roadInfoList) == 0 { - logs.Error(fmt.Sprintf("通道轮询池=%s, 没有配置通道", merchant.RollPayForRoadCode)) - return false - } - payFor.RoadUid = roadInfoList[0].RoadUid - payFor.RoadName = roadInfoList[0].RoadName - } - - o := orm.NewOrm() - // 开启事务 - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - var tmpPayFor models.PayforInfo - if err := txOrm.Raw("select * from payfor_info where payfor_uid = ? for update", payFor.PayforUid).QueryRow(&tmpPayFor); err != nil || tmpPayFor.PayforUid == "" { - logs.Error("find payfor road select payfor fail:", err) - return err - } - - if tmpPayFor.Status != common.PAYFOR_COMFRIM { - logs.Notice(fmt.Sprintf("该代付记录uid=%s,已经被审核", payFor.PayforUid)) - return errors.New("已经被审核") - } - tmpPayFor.UpdateTime = utils.GetBasicDateTime() - tmpPayFor.Status = common.PAYFOR_SOLVING - tmpPayFor.GiveType = common.PAYFOR_ROAD - - if _, err := txOrm.Update(&tmpPayFor); err != nil { - logs.Error(fmt.Sprintf("该代付记录uid=%s,从审核更新为正在处理出错: %s", payFor.PayforUid, err)) - return err - } - - return nil - - }); err != nil { - return false - } - return true -} - -/* -* 执行逻辑 - */ -func SolvePayFor() { - //取出一天之内的没有做处理并且不是手动打款的代付记录 - params := make(map[string]string) - beforeOneDay := utils.GetDateTimeBeforeDays(1) - nowDate := utils.GetBasicDateTime() - params["create_time__lte"] = nowDate - params["create_time__gte"] = beforeOneDay - params["is_send"] = "no" - params["status"] = common.PAYFOR_SOLVING - params["give_type"] = common.PAYFOR_ROAD - - payForList := models.GetPayForListByParams(params) - for _, p := range payForList { - if p.Type == common.SELF_HELP { - //如果后台管理人员,通过任意下发,不涉及到商户减款操作,直接发送代付请求 - solveSelf(p) - } else { - SendPayFor(p) - } - } -} - -func solveSelf(payFor models.PayforInfo) bool { - o := orm.NewOrm() - - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - var tmpPayFor models.PayforInfo - if err := txOrm.Raw("select * from payfor_info where payfor_uid = ? for update", payFor.PayforUid).QueryRow(&tmpPayFor); err != nil || tmpPayFor.PayforUid == "" { - logs.Error("solve self payfor fail:", err) - return errors.New("solve self payfor fail") - } - - if tmpPayFor.IsSend == common.YES { - return errors.New("代付已经发送") - } - - tmpPayFor.UpdateTime = utils.GetBasicDateTime() - if payFor.RoadUid == "" { - tmpPayFor.Status = common.PAYFOR_FAIL - } else { - tmpPayFor.Status = common.PAYFOR_BANKING - tmpPayFor.RequestTime = utils.GetBasicDateTime() - tmpPayFor.IsSend = common.YES - } - if _, err := txOrm.Update(&tmpPayFor); err != nil { - return err - } - - RequestPayFor(payFor) - - return nil - - }); err != nil { - return false - } - return true -} - -func SendPayFor(payFor models.PayforInfo) bool { - o := orm.NewOrm() - - if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { - var tmpPayFor models.PayforInfo - if err := txOrm.Raw("select * from payfor_info where payfor_uid = ? for update", payFor.PayforUid).QueryRow(&tmpPayFor); err != nil || tmpPayFor.PayforUid == "" { - logs.Error("send payfor select payfor fail: ", err) - return err - } - - var account models.AccountInfo - if err := txOrm.Raw("select * from account_info where account_uid = ? for update", payFor.MerchantUid).QueryRow(&account); err != nil || account.AccountUid == "" { - logs.Error("send payfor select account fail:", err) - return err - } - - //支付金额不足,将直接判定为失败,不往下面邹逻辑了 - if account.SettleAmount-account.PayforAmount < tmpPayFor.PayforAmount+tmpPayFor.PayforFee { - tmpPayFor.Status = common.PAYFOR_FAIL - tmpPayFor.UpdateTime = utils.GetBasicDateTime() - - if _, err := txOrm.Update(&tmpPayFor); err != nil { - return err - } else { - return nil - } - } - - account.UpdateTime = utils.GetBasicDateTime() - account.PayforAmount = account.PayforAmount + payFor.PayforAmount + payFor.PayforFee - - if _, err := txOrm.Update(&account); err != nil { - logs.Error(fmt.Sprintf("商户uid=%s,在发送代付给上游的处理中,更新账户表出错, err: %s", payFor.MerchantUid, err)) - return err - } - - tmpPayFor.IsSend = common.YES - tmpPayFor.Status = common.PAYFOR_BANKING //变为银行处理中 - tmpPayFor.RequestTime = utils.GetBasicDateTime() - tmpPayFor.UpdateTime = utils.GetBasicDateTime() - - if _, err := txOrm.Update(&tmpPayFor); err != nil { - logs.Error(fmt.Sprintf("商户uid=%s,在发送代付给上游的处理中,更代付列表出错, err:%s", payFor.MerchantUid, err)) - return err - } - - RequestPayFor(payFor) - - return nil - }); err != nil { - return false - } - return true -} - -func RequestPayFor(payFor models.PayforInfo) { - if payFor.RoadUid == "" { - return - } - roadInfo := models.GetRoadInfoByRoadUid(payFor.RoadUid) - supplierCode := roadInfo.ProductUid - supplier := GetPaySupplierByCode(supplierCode) - res := supplier.PayFor(payFor) - logs.Info(fmt.Sprintf("代付uid=%s,上游处理结果为:%s", payFor.PayforUid, res)) - //将代付订单号发送到消息队列 - message_queue.SendMessage(common.MQ_PAYFOR_QUERY, payFor.BankOrderId) -} diff --git a/boss/supplier/supplier_interface.go b/boss/supplier/supplier_interface.go deleted file mode 100644 index bd8b535..0000000 --- a/boss/supplier/supplier_interface.go +++ /dev/null @@ -1,41 +0,0 @@ -/*************************************************** - ** @Desc : This file for ... - ** @Time : 2019/10/28 9:39 - ** @Author : yuebin - ** @File : supplier_interface - ** @Last Modified by : yuebin - ** @Last Modified time: 2019/10/28 9:39 - ** @Software: GoLand -****************************************************/ -package controller - -import ( - "boss/models" -) - -//定义扫码支付的返回值 -type ScanData struct { - Supplier string //上游的通道供应商 - PayType string //支付类型 - OrderNo string //下游商户请求订单号 - BankNo string //本系统的请求订单号 - OrderPrice string //订单金额 - FactPrice string //实际的展示在客户面前的金额 - Status string //状态码 '00' 成功 - PayUrl string //支付二维码链接地址 - Msg string //附加的信息 -} - -type PayInterface interface { - Scan(models.OrderInfo, models.RoadInfo, models.MerchantInfo) ScanData - H5(models.OrderInfo, models.RoadInfo, models.MerchantInfo) ScanData - Fast(models.OrderInfo, models.RoadInfo, models.MerchantInfo) bool - Syt(models.OrderInfo, models.RoadInfo, models.MerchantInfo) ScanData - Web(models.OrderInfo, models.RoadInfo, models.MerchantInfo) bool - PayNotify() - PayQuery(models.OrderInfo) bool - PayFor(models.PayforInfo) string - PayForNotify() string - PayForQuery(models.PayforInfo) (string, string) - BalanceQuery(models.RoadInfo) float64 -} diff --git a/boss/supplier/weixin.go b/boss/supplier/weixin.go deleted file mode 100644 index a866387..0000000 --- a/boss/supplier/weixin.go +++ /dev/null @@ -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 ( - "boss/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 -} diff --git a/boss/gojson/gojson.go b/boss/utils/gojson.go similarity index 99% rename from boss/gojson/gojson.go rename to boss/utils/gojson.go index 2252c03..fb73094 100644 --- a/boss/gojson/gojson.go +++ b/boss/utils/gojson.go @@ -1,4 +1,4 @@ -package gojson +package utils import ( "encoding/json" diff --git a/boss/views/account.html b/boss/views/account.html index 5a8a2ec..3d10561 100644 --- a/boss/views/account.html +++ b/boss/views/account.html @@ -1,6 +1,6 @@ - + 管理后台 @@ -36,8 +36,10 @@
- 账户余额:用户充值成功后立马相加,提款成功后相减的结果。结算金额:用户充值成功过一段时间后相加,出款成功后相减的结果。 - 可用金额 = (结算金额 - 冻结金额 - 押款金额 - 正在出款金额) + 账户余额:用户充值成功后立马相加,提款成功后相减的结果。 + 待结算金额:用户充值后,还没有加到可结算金中。 + 结算金额: 可以提现的金额 = (账户余额 - 待结算金额 - 押款金额 - 冻结金额 - 正在出款金额) +