package gys import ( "encoding/base64" "errors" "fmt" "github.com/gin-gonic/gin" "github.com/golangkit/formatime" "github.com/jinzhu/gorm" "github.com/shopspring/decimal" "io/ioutil" "log" "path/filepath" "recook/configs" "recook/internal/api/manage/gys/logic" "recook/internal/back" "recook/internal/dbc" "recook/internal/libs/aliyun" "recook/internal/libs/bean" "recook/internal/libs/juhe" "recook/internal/libs/tianyan" "recook/internal/model/gys" "recook/internal/model/manage" "recook/internal/model/vend" "recook/internal/static_path" "recook/tools" "strconv" "time" ) type Enterprise struct { base } type replyStatus struct { Status string `json:"status"` StateInfo string `json:"stateInfo"` Name string `json:"name"` Email string `json:"email"` Contract string `json:"contract"` } // @Style 状态查询 func (e *Enterprise) Status(c *gin.Context) { userId, err := e.GetGysIdByWs(c) if err != nil { back.Fail(c, err.Error()) return } state := vend.GysEnterpriseState{} dbc.DB.First(&state, "user_id = ?", userId) if state.ID > 0 { // 认证成功 email := "" Contract := "" if state.State == "2" { sector := vend.GysEnterpriseSector{} dbc.DB.First(§or, "enterprise_id = ? and `type` = ?", state.ID, vend.Sector_Type_Sales) email = sector.Email if tools.FileExist(filepath.Join(static_path.Dir.Root, "/contract/pdf/瑞库客平台合作协议_"+state.ContractNo+".pdf")) { Contract = "/contract/pdf/瑞库客平台合作协议_" + state.ContractNo + ".pdf" } } back.Suc(c, "操作成功", replyStatus{Status: state.State, StateInfo: state.StateInfo, Name: state.EnterpriseName, Email: email, Contract: Contract}) return } back.Suc(c, "操作成功", replyStatus{Status: "0"}) return } type replyFillData struct { CompanyId uint `json:"companyId" form:"companyId"` LicenseUrl string `json:"licenseUrl" form:"licenseUrl"` LegalPersonUrl string `json:"legalPersonUrl" form:"legalPersonUrl"` PaytaxesUrl string `json:"paytaxesUrl" form:"paytaxesUrl"` AccountUrl string `json:"accountUrl" form:"accountUrl"` BankName string `json:"bankName" form:"bankName"` // 开户行 BankCode string `json:"bankCode" form:"bankCode"` // 银行账户 Address string `json:"address" form:"address"` // 地址 PayTaxes int `json:"payTaxes" form:"payTaxes"` Sales logic.Sector `json:"sales"` // 业务联系人 SourceId uint `json:"sourceId" form:"sourceId"` Name string `json:"name"` RegNum string `json:"regNum"` LegalPersonName string `json:"legalPersonName"` IsCreditCode int `json:"isCreditCode"` TaxNumber string `json:"taxNumber"` FormTime string `json:"formTime"` ToTime string `json:"toTime"` OperationAddress string `json:"operationAddress"` Tel string `json:"tel"` } func (e *Enterprise) FillData(c *gin.Context) { userId, err := e.GetGysIdByWs(c) if err != nil { back.Fail(c, err.Error()) return } state := vend.GysEnterpriseState{} dbc.DB.Table("gys_enterprise_state").First(&state, "user_id = ?", userId) if state.ID > 0 { if state.State == "1" { back.Fail(c, "账户审核中") return } if state.State == "2" { back.Fail(c, "账户已审核通过") return } } log.Println(state) sector := vend.GysEnterpriseSector{} dbc.DB.First(§or, "enterprise_id = ? and `type` = ?", state.ID, vend.Sector_Type_Sales) companyBase := gys.GysCompanyBase{} dbc.DB.First(&companyBase, "id = ?", state.CompanyId) result := replyFillData{ CompanyId: state.CompanyId, LicenseUrl: state.LicenseUrl, LegalPersonUrl: state.LegalPersonUrl, PaytaxesUrl: state.PaytaxesUrl, AccountUrl: state.AccountUrl, BankName: state.BankName, BankCode: state.BankCode, Address: state.Address, PayTaxes: state.PayTaxes, Sales: logic.Sector{ Name: sector.Name, Phone: sector.Phone, Email: sector.Email, Position: sector.Position, }, SourceId: state.Source, Name: state.EnterpriseName, RegNum: state.EnterpriseCode, LegalPersonName: state.LegalPerson, IsCreditCode: companyBase.IsCreditCode, TaxNumber: state.TaxNumber, FormTime: state.BusinessStart, ToTime: state.BusinessEnd, OperationAddress: state.OperationAddress, Tel: state.Tel, } back.Suc(c, "操作成功", result) return } type argsLicense struct { LicenseUrl string `json:"licenseUrl" form:"licenseUrl"` } type replyLicense struct { Name string `json:"name"` RegNum string `json:"regNum"` } // @Style 营业执照识别 func (e *Enterprise) License(c *gin.Context) { userId, err := e.GetGysIdByWs(c) if err != nil { back.Fail(c, err.Error()) return } args := argsLicense{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } if args.LicenseUrl == "" { back.Fail(c, "参数错误") return } state := vend.GysEnterpriseState{} dbc.DB.Table("gys_enterprise_state").First(&state, "user_id = ?", userId) if state.ID > 0 { if state.State == "1" { back.Fail(c, "账户审核中") return } if state.State == "2" { back.Fail(c, "账户已审核通过") return } } licenseInfo := gys.OcrBusinessLicense{} dbc.DB.First(&licenseInfo, "img_path = ?", args.LicenseUrl) if licenseInfo.Id > 0 { back.Suc(c, "操作成功", replyLicense{ Name: licenseInfo.Name, RegNum: licenseInfo.RegNum, }) return } date := time.Now().Format("20060102") i, _ := dbc.Rds.Get(fmt.Sprintf("ocr:license:%v:user:%v", date, userId)).Int() if i < 10 { dbc.Rds.Set(fmt.Sprintf("ocr:license:%v:user:%v", date, userId), i+1, time.Hour*24) file, err := ioutil.ReadFile(static_path.Dir.Root + args.LicenseUrl) if err != nil { back.Fail(c, "图片错误") return } license, err := aliyun.Ocr.BusinessLicense(base64.StdEncoding.EncodeToString(file)) if err != nil { log.Println(err) back.Fail(c, "未识别出营业执照信息,请重拍或着手动填写") return } isSuccess := 0 if license.Success { isSuccess = 1 } dbc.DB.Create(&gys.OcrBusinessLicense{ ImgPath: args.LicenseUrl, IsSuccess: isSuccess, Name: license.Name, RegNum: license.RegNum, }) back.Suc(c, "操作成功", replyLicense{ Name: license.Name, RegNum: license.RegNum, }) return } else { back.Fail(c, "图片识别每日限10次,请手动录入或明日再试") return } } type argsComapany struct { Name string `json:"name" form:"name"` RegNum string `json:"regNum" form:"regNum"` } type replyCompany struct { CompanyId uint `json:"companyId"` Name string `json:"name"` RegNum string `json:"regNum"` LegalPersonName string `json:"legalPersonName"` IsCreditCode int `json:"isCreditCode"` TaxNumber string `json:"taxNumber"` FormTime string `json:"formTime"` ToTime string `json:"toTime"` Address string `json:"address"` Bank string `json:"bank"` Bankaccount string `json:"bankaccount"` Tel string `json:"tel"` } // @Style 企业信息获取 func (e *Enterprise) Company(c *gin.Context) { userId, err := e.GetGysIdByWs(c) if err != nil { back.Fail(c, err.Error()) return } args := argsComapany{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } if args.Name == "" { back.Fail(c, "参数错误") return } // 本地数据查询 companyBase := gys.GysCompanyBase{} dbc.DB.First(&companyBase, "name = ?", args.Name) if companyBase.Id > 0 { creditcode := gys.GysCompanyCreditcode{} if companyBase.IsCreditCode == 1 { dbc.DB.First(&creditcode, "company_id = ?", companyBase.Id) } back.Suc(c, "操作成功", replyCompany{ CompanyId: companyBase.Id, Name: companyBase.Name, RegNum: companyBase.CreditCode, LegalPersonName: companyBase.LegalPersonName, IsCreditCode: companyBase.IsCreditCode, TaxNumber: companyBase.TaxNumber, FormTime: companyBase.GetBusinessStart(), ToTime: companyBase.GetBusinessEnd(), Address: creditcode.Address, Bank: creditcode.Bank, Bankaccount: creditcode.Bankaccount, }) return } else { // 频率检测 date := time.Now().Format("20060102") i, _ := dbc.Rds.Get(fmt.Sprintf("tianyan:company:%v:user:%v", date, userId)).Int() if i >= 10 { back.Fail(c, "操作次数过多,请明天重试") return } dbc.Rds.Set(fmt.Sprintf("tianyan:company:%v:user:%v", date, userId), i+1, time.Hour*24) // 工商信息获取 info, err := tianyan.Company.BaseInfo(args.Name) if err != nil { back.Fail(c, "网络异常") return } if info.ID > 0 { // 获取到工商信息,调用接口获取开票信息 creditCode, _ := juhe.Juhe.CreditCode(info.RegNumber) isCreditCode := 0 if creditCode.Name != "" { isCreditCode = 1 } // 写入数据 data := gys.GysCompanyBase{ StaffNumRange: info.StaffNumRange, FromTime: info.FromTime, Type: info.Type, BondName: info.BondName, TianyanId: info.ID, IsMicroEnt: info.IsMicroEnt, UsedBondName: info.UsedBondName, RegNumber: info.RegNumber, PercentileScore: info.PercentileScore, RegCapital: info.RegCapital, Name: info.Name, RegInstitute: info.RegInstitute, RegLocation: info.RegLocation, Industry: info.Industry, ApprovedTime: info.ApprovedTime, SocialStaffNum: info.SocialStaffNum, Tags: info.Tags, TaxNumber: info.TaxNumber, BusinessScope: info.BusinessScope, Property3: info.Property3, Alias: info.Alias, OrgNumber: info.OrgNumber, RegStatus: info.RegStatus, EstiblishTime: info.EstiblishTime, BondType: info.BondType, LegalPersonName: info.LegalPersonName, ToTime: info.ToTime, ActualCapital: info.ActualCapital, CompanyOrgType: info.CompanyOrgType, Base: info.Base, CreditCode: info.CreditCode, HistoryNames: info.HistoryNames, BondNum: info.BondNum, RevokeDate: info.RevokeDate, RevokeReason: info.RevokeReason, CancelDate: info.CancelDate, CancelReason: info.CancelReason, Category: info.Category, CategoryBig: info.CategoryBig, CategoryMiddle: info.CategoryMiddle, IsCreditCode: isCreditCode, } dbc.DB.Create(&data) if data.Id > 0 { dbc.DB.Create(&gys.GysCompanyCreditcode{ CompanyId: data.Id, Name: creditCode.Name, Creditcode: creditCode.Creditcode, Econkind: creditCode.Econkind, Status: creditCode.Status, Address: creditCode.Address, Tel: creditCode.Tel, Bank: creditCode.Bank, Bankaccount: creditCode.Bankaccount, Orderid: creditCode.Orderid, }) } back.Suc(c, "操作成功", replyCompany{ CompanyId: data.Id, Name: data.Name, RegNum: data.CreditCode, LegalPersonName: data.LegalPersonName, IsCreditCode: isCreditCode, TaxNumber: data.TaxNumber, FormTime: data.GetBusinessStart(), ToTime: data.GetBusinessEnd(), Address: creditCode.Address, Bank: creditCode.Bank, Bankaccount: creditCode.Bankaccount, Tel: creditCode.Tel, }) return } else { back.Fail(c, "未查询到相关企业信息,请确认公司名称是否准确") return } } } // @Style 来源-运用商 func (e *Enterprise) Source(c *gin.Context) { gysSources := []gys.GysSource{} dbc.DB.Order("order").Find(&gysSources, "is_show = 1") back.Suc(c, "操作成功", gysSources) } type argsSubmit struct { CompanyId uint `json:"companyId" form:"companyId"` LicenseUrl string `json:"licenseUrl" form:"licenseUrl"` LegalPersonUrl string `json:"legalPersonUrl" form:"legalPersonUrl"` PaytaxesUrl string `json:"paytaxesUrl" form:"paytaxesUrl"` AccountUrl string `json:"accountUrl" form:"accountUrl"` BankName string `json:"bankName" form:"bankName"` // 开户行 BankCode string `json:"bankCode" form:"bankCode"` // 银行账户 Address string `json:"address" form:"address"` // 地址 OperationAddress string `json:"operationAddress" form:"operationAddress"` // 经营地址 PayTaxes int `json:"payTaxes" form:"payTaxes"` logic.Sector // 业务联系人 SourceId uint `json:"sourceId" form:"sourceId"` Tel string `json:"tel" form:"tel"` } // @Style 提交数据 func (e *Enterprise) Submit(c *gin.Context) { userId, err := e.GetGysIdByWs(c) if err != nil { back.Fail(c, err.Error()) return } args := argsSubmit{} err = tools.Params(&args, c) if err != nil { back.Fail(c, err.Error()) return } if err := logic.SectorLogic.VerfiySector(args.Sector); err != nil { back.Fail(c, err.Error()) return } gysState := vend.GysEnterpriseState{} dbc.DB.First(&gysState, "user_id = ?", userId) if gysState.ID > 0 { if gysState.State == "1" { back.Fail(c, "资料申请审核中") return } if gysState.State == "2" { back.Fail(c, "已审核通过") return } } companyBase := gys.GysCompanyBase{} dbc.DB.First(&companyBase, "id = ?", args.CompanyId) if companyBase.Id <= 0 { back.Fail(c, "资料错误") return } //if companyBase.IsCreditCode == 1 { // creditcode := gys.GysCompanyCreditcode{} // dbc.DB.First(&creditcode, "company_id = ?", companyBase.Id) //args.BankCode = creditcode.Bankaccount //args.BankName = creditcode.Bank //args.Address = creditcode.Address //} // 合同编号 contractNo, err := logic.EnterpriseLogic.GetContractNo() if err != nil { back.Fail(c, err.Error()) return } contractTmp := vend.GysEnterpriseState{} dbc.DB.First(&contractTmp, "contract_no = ?", contractNo) if contractTmp.ID > 0 { if contractTmp.ID != gysState.ID { back.Fail(c, "合同编号获取失败") return } } gysSource := gys.GysSource{} dbc.DB.First(&gysSource, "id = ?", args.SourceId) if gysSource.Id <= 0 { back.Fail(c, "运营方选择错误") return } // 生成预览合同 if err := logic.EnterpriseLogic.ContractInit(contractNo, companyBase.Name, companyBase.TaxNumber, args.OperationAddress, args.BankName, args.BankCode, gysSource); err != nil { back.Fail(c, err.Error()) return } if err = dbc.DB.Transaction(func(tx *gorm.DB) error { gysEnterpriseState := vend.GysEnterpriseState{ EnterpriseName: companyBase.Name, Recommended: "0", RegistrationAddress: 1, Trade: 1, CompanyType: companyBase.GetCompanyType(), CompanyTypeInfo: companyBase.GetCompanyInfo(), Capital: decimal.NewFromFloat(companyBase.GetRegCapital()).String(), Currency: companyBase.GetCurrency(), BusinessStart: companyBase.GetBusinessStart(), BusinessEnd: companyBase.GetBusinessEnd(), RegistrationDetailAddress: companyBase.RegLocation, EnterpriseCode: companyBase.CreditCode, LicenseUrl: args.LicenseUrl, PayTaxes: args.PayTaxes, PaytaxesUrl: args.PaytaxesUrl, AccountUrl: args.AccountUrl, LegalPerson: companyBase.LegalPersonName, LegalPersonUrl: args.LegalPersonUrl, ComitTime: formatime.NewSecondNow(), State: "1", UserID: strconv.FormatUint(uint64(userId), 10), CompanyId: args.CompanyId, Source: args.SourceId, TaxNumber: companyBase.TaxNumber, BankName: args.BankName, BankCode: args.BankCode, Address: args.Address, ContractNo: contractNo, OperationAddress: args.OperationAddress, Tel: args.Tel, } if gysState.ID > 0 { gysEnterpriseState.ID = gysState.ID logic.EnterpriseLogic.Updates(gysEnterpriseState.ID, &gysEnterpriseState, tx) } else { logic.EnterpriseLogic.Create(&gysEnterpriseState, tx) } if gysEnterpriseState.ID <= 0 { return errors.New("网络异常") } if gysState.ID > 0 { logic.SectorLogic.Delete(gysEnterpriseState.ID, tx) } // 业务联系人 sales := vend.GysEnterpriseSector{ Name: args.Sector.Name, Phone: args.Sector.Phone, Email: args.Sector.Email, Position: args.Sector.Position, EnterpriseID: gysEnterpriseState.ID, Type: vend.Sector_Type_Sales, } logic.SectorLogic.Create(&sales, tx) if sales.ID <= 0 { return errors.New("网络异常") } return nil }); err != nil { back.Fail(c, err.Error()) return } back.Suc(c, "资料提交成功", nil) return } func (e *Enterprise) Create(c *gin.Context) { userId, err := e.GetGysId(c) if err != nil { back.Fail(c, err.Error()) return } args := logic.EnterpriseInfo{} err = tools.Params(&args, c) if err != nil { back.Fail(c, err.Error()) return } if err := logic.EnterpriseLogic.Verfiy(&args); err != nil { back.Fail(c, err.Error()) return } gysEnterpriseState := vend.GysEnterpriseState{} dbc.DB.First(&gysEnterpriseState, "user_id = ?", userId) if gysEnterpriseState.ID > 0 { back.Fail(c, "资料已提交") return } if err = dbc.DB.Transaction(func(tx *gorm.DB) error { gysEnterpriseState := vend.GysEnterpriseState{ EnterpriseName: args.EnterpriseName, RegistrationAddress: args.RegistrationAddress, Trade: args.Trade, Recommended: "0", CompanyType: args.CompanyType, CompanyTypeInfo: args.CompanyTypeInfo, Capital: args.CapitalDecimal.String(), Currency: args.Currency, BusinessStart: args.BusinessStartTime.Format("2006-01-02"), BusinessEnd: args.BusinessEndTime.Format("2006-01-02"), RegistrationProvince: args.RegistrationProvince, RegistrationCity: args.RegistrationCity, RegistrationDistrict: args.RegistrationDistrict, RegistrationDetailAddress: args.RegistrationDetailAddress, OperationProvince: args.OperationProvince, OperationCity: args.OperationCity, OperationDistrict: args.OperationDistrict, OperationAddress: args.OperationAddress, EnterpriseCode: args.EnterpriseCode, LicenseUrl: args.LicenseUrl, PayTaxes: args.PayTaxes, PaytaxesUrl: args.PaytaxesUrl, AccountUrl: args.AccountUrl, LegalPerson: args.LegalPerson, LegalPersonCode: args.LegalPersonCode, LegalPersonUrl: args.LegalPersonUrl, OverseasRegistration: args.OverseasRegistration, OverseasOperation: args.OverseasOperation, OverseasOperationInfo: args.OverseasOperationInfo, OverseasCode: args.OverseasCode, OverseasCodeUrl: args.OverseasCodeUrl, OverseasAccountUrl: args.OverseasAccountUrl, OverseasLegalPerson: args.OverseasLegalPerson, OverseasLegalPersonUrl: args.OverseasLegalPersonUrl, ComitTime: formatime.NewSecondNow(), State: "1", UserID: strconv.FormatUint(uint64(userId), 10), } logic.EnterpriseLogic.Create(&gysEnterpriseState, tx) if gysEnterpriseState.ID <= 0 { return errors.New("网络异常") } // 业务联系人 sales := vend.GysEnterpriseSector{ Name: args.Sales.Name, Phone: args.Sales.Phone, Email: args.Sales.Email, EnterpriseID: gysEnterpriseState.ID, Type: vend.Sector_Type_Sales, } logic.SectorLogic.Create(&sales, tx) if sales.ID <= 0 { return errors.New("网络异常") } // 售后联系人 afterSales := vend.GysEnterpriseSector{ Name: args.AfterSales.Name, Phone: args.AfterSales.Phone, Email: args.AfterSales.Email, EnterpriseID: gysEnterpriseState.ID, Type: vend.Sector_Type_AfterSales, } logic.SectorLogic.Create(&afterSales, tx) if sales.ID <= 0 { return errors.New("网络异常") } // 对账联系人 account := vend.GysEnterpriseSector{ Name: args.Account.Name, Phone: args.Account.Phone, Email: args.Account.Email, EnterpriseID: gysEnterpriseState.ID, Type: vend.Sector_Type_Account, } logic.SectorLogic.Create(&account, tx) if sales.ID <= 0 { return errors.New("网络异常") } if err := logic.BrandLogic.HandBrand(0, userId, args.Brand, gysEnterpriseState.ID, "1", tx); err != nil { return err } return nil }); err != nil { back.Fail(c, err.Error()) return } back.Suc(c, "资料提交成功", nil) return } // @Style 重新提交 func (e *Enterprise) Update(c *gin.Context) { userId, err := e.GetGysId(c) if err != nil { back.Fail(c, err.Error()) return } args := logic.EnterpriseInfo{} err = tools.Params(&args, c) if err != nil { back.Fail(c, err.Error()) return } if err := logic.EnterpriseLogic.Verfiy(&args); err != nil { back.Fail(c, err.Error()) return } gysEnterpriseState := vend.GysEnterpriseState{} dbc.DB.First(&gysEnterpriseState, "user_id = ?", userId) if gysEnterpriseState.ID <= 0 { back.Fail(c, "资料未提交") return } if gysEnterpriseState.State == "3" { back.Fail(c, "资料已审核通过") return } gysEnterpriseStateId := gysEnterpriseState.ID if err := dbc.DB.Transaction(func(tx *gorm.DB) error { gysEnterpriseState = vend.GysEnterpriseState{ EnterpriseName: args.EnterpriseName, RegistrationAddress: args.RegistrationAddress, Trade: args.Trade, CompanyType: args.CompanyType, CompanyTypeInfo: args.CompanyTypeInfo, Capital: args.CapitalDecimal.String(), Currency: args.Currency, BusinessStart: args.BusinessStartTime.Format("2006-01-02"), BusinessEnd: args.BusinessEndTime.Format("2006-01-02"), RegistrationProvince: args.RegistrationProvince, RegistrationCity: args.RegistrationCity, RegistrationDistrict: args.RegistrationDistrict, RegistrationDetailAddress: args.RegistrationDetailAddress, OperationProvince: args.OperationProvince, OperationCity: args.OperationCity, OperationDistrict: args.OperationDistrict, OperationAddress: args.OperationAddress, EnterpriseCode: args.EnterpriseCode, LicenseUrl: args.LicenseUrl, PayTaxes: args.PayTaxes, PaytaxesUrl: args.PaytaxesUrl, AccountUrl: args.AccountUrl, LegalPerson: args.LegalPerson, LegalPersonCode: args.LegalPersonCode, LegalPersonUrl: args.LegalPersonUrl, OverseasRegistration: args.OverseasRegistration, OverseasOperation: args.OverseasOperation, OverseasOperationInfo: args.OverseasOperationInfo, OverseasCode: args.OverseasCode, OverseasCodeUrl: args.OverseasCodeUrl, OverseasAccountUrl: args.OverseasAccountUrl, OverseasLegalPerson: args.OverseasLegalPerson, OverseasLegalPersonUrl: args.OverseasLegalPersonUrl, ComitTime: formatime.NewSecondNow(), State: "1", UserID: strconv.FormatUint(uint64(userId), 10), } row := logic.EnterpriseLogic.Updates(gysEnterpriseStateId, &gysEnterpriseState, tx) if row <= 0 { return errors.New("网络异常") } // 删除联系人 row = logic.SectorLogic.Delete(gysEnterpriseStateId, tx) if row <= 0 { return errors.New("网络异常") } // 业务联系人 sales := vend.GysEnterpriseSector{ Name: args.Sales.Name, Phone: args.Sales.Phone, Email: args.Sales.Email, EnterpriseID: gysEnterpriseState.ID, Type: vend.Sector_Type_Sales, } logic.SectorLogic.Create(&sales, tx) if sales.ID <= 0 { back.Fail(c, "网络异常") } // 售后联系人 afterSales := vend.GysEnterpriseSector{ Name: args.AfterSales.Name, Phone: args.AfterSales.Phone, Email: args.AfterSales.Email, EnterpriseID: gysEnterpriseState.ID, Type: vend.Sector_Type_AfterSales, } logic.SectorLogic.Create(&afterSales, tx) if sales.ID <= 0 { back.Fail(c, "网络异常") } // 对账联系人 account := vend.GysEnterpriseSector{ Name: args.Account.Name, Phone: args.Account.Phone, Email: args.Account.Email, EnterpriseID: gysEnterpriseState.ID, Type: vend.Sector_Type_Account, } logic.SectorLogic.Create(&account, tx) if sales.ID <= 0 { back.Fail(c, "网络异常") } if err := logic.BrandLogic.HandBrand(0, userId, args.Brand, gysEnterpriseState.ID, "1", dbc.DB); err != nil { return err } return nil }); err != nil { back.Fail(c, err.Error()) return } back.Suc(c, "资料提交成功", nil) return } // @Style 合同预览 func (e *Enterprise) Contract(c *gin.Context) { userId, err := e.GetGysIdByWs(c) if err != nil { back.Fail(c, err.Error()) return } // 获取合同模版 gysState := vend.GysEnterpriseState{} dbc.DB.First(&gysState, "user_id = ?", userId) if gysState.ID <= 0 { back.Fail(c, "请求失败") return } back.Suc(c, "操作成功", gin.H{ "contracts": []string{ "/photo/contract/" + tools.MD5(gysState.ContractNo+"-contract-01.jpg") + ".jpg", "/photo/contract/contract-02.jpg", "/photo/contract/" + tools.MD5(gysState.ContractNo+"-contract-03.jpg") + ".jpg", "/photo/contract/" + tools.MD5(gysState.ContractNo+"-contract-04.jpg") + ".jpg", "/photo/contract/" + tools.MD5(gysState.ContractNo+"-contract-05.jpg") + ".jpg", "/photo/contract/contract-06.jpg", "/photo/contract/contract-07.jpg", "/photo/contract/contract-08.jpg", "/photo/contract/contract-09.jpg", "/photo/contract/contract-10.jpg", "/photo/contract/contract-11.jpg", "/photo/contract/contract-12.jpg", "/photo/contract/contract-13.jpg", }, }) return } type argsEmail struct { Email string `json:"email"` } // @Style 发送邮件 func (e *Enterprise) Email(c *gin.Context) { userId, err := e.GetGysIdByWs(c) if err != nil { back.Fail(c, err.Error()) return } args := argsEmail{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } if !tools.VerifyEmail(args.Email) { back.Fail(c, "联系人邮箱格式错误") return } // 记录邮件信息 email := gys.GysEmail{ Email: args.Email, RelationId: userId, Type: gys.Mail_Type_Gys_Settled, } dbc.DB.Create(&email) if email.Id > 0 { // 加入队列 dbc.Rds.RPush(configs.Config_Gys_Email_list_redis_key, email.Id) } else { back.Fail(c, "网络异常") return } back.Suc(c, "操作成功", nil) return } type argsEnterpriseInfo struct { EnterpriseId uint `json:"enterpriseId" form:"enterpriseId"` } type replyEnterpriseInfo struct { EnterpriseName string `json:"enterpriseName"` BusinessEnd string `json:"businessEnd"` BusinessStart string `json:"businessStart"` PayTaxes int `json:"payTaxes"` BankName string `json:"bankName"` BankCode string `json:"bankCode"` LicenseUrl string `json:"licenseUrl"` PaytaxesUrl string `json:"paytaxesUrl"` AccountUrl string `json:"accountUrl"` LegalPersonUrl string `json:"legalPersonUrl"` LegalPerson string `json:"legalPerson"` Name string `json:"name"` Position string `json:"position"` Email string `json:"email"` Phone string `json:"phone"` Source uint `json:"source"` RegistrationDetailAddress string `json:"registrationDetailAddress"` SourceName string `json:"sourceName"` TelPhone string `json:"telPhone"` TaxNumber string `json:"taxNumber"` StateInfo string `json:"stateInfo"` ContractStart formatime.Date `json:"contractStart"` ContractEnd formatime.Date `json:"contractEnd"` Deposit decimal.Decimal `json:"deposit"` Period int `json:"period"` ContractNo string `json:"contractNo"` } // @Style 详情 func (e *Enterprise) Info(c *gin.Context) { args := argsEnterpriseInfo{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } if args.EnterpriseId <= 0 { back.Fail(c, "参数错误") return } enterpriseState := vend.GysEnterpriseState{} dbc.DB.First(&enterpriseState, "id = ?", args.EnterpriseId) if enterpriseState.ID <= 0 { back.Fail(c, "参数错误") return } enterpriseSector := vend.GysEnterpriseSector{} dbc.DB.First(&enterpriseSector, "enterprise_id = ? and `type` = ?", enterpriseState.ID, vend.Sector_Type_Sales) source := gys.GysSource{} dbc.DB.Model(&gys.GysSource{}).First(&source, "id = ?", enterpriseState.Source) gysUser := vend.GysUsers{} dbc.DB.First(&gysUser, "id = ?", enterpriseState.UserID) back.Suc(c, "操作成功", replyEnterpriseInfo{ EnterpriseName: enterpriseState.EnterpriseName, TaxNumber: enterpriseState.TaxNumber, BusinessStart: enterpriseState.BusinessStart, BusinessEnd: enterpriseState.BusinessEnd, PayTaxes: enterpriseState.PayTaxes, BankName: enterpriseState.BankName, BankCode: enterpriseState.BankCode, LicenseUrl: enterpriseState.LicenseUrl, PaytaxesUrl: enterpriseState.PaytaxesUrl, AccountUrl: enterpriseState.AccountUrl, LegalPerson: enterpriseState.LegalPerson, LegalPersonUrl: enterpriseState.LegalPersonUrl, Name: enterpriseSector.Name, Phone: enterpriseSector.Phone, Email: enterpriseSector.Email, Position: enterpriseSector.Position, Source: enterpriseState.Source, RegistrationDetailAddress: enterpriseState.RegistrationDetailAddress, SourceName: source.Name, TelPhone: gysUser.Username, StateInfo: enterpriseState.StateInfo, ContractStart: formatime.NewDateFrom(enterpriseState.ContractStart.Time), ContractEnd: formatime.NewDateFrom(enterpriseState.ContractEnd.Time), Deposit: enterpriseState.Deposit, Period: enterpriseState.Period, ContractNo: enterpriseState.ContractNo, }) } type argsList struct { EnterpriseName string `json:"enterpriseName" form:"enterpriseName"` ContractNo string `json:"contractNo" form:"contractNo"` Source uint `json:"source" form:"source"` ComitTimeStart string `json:"comitTimeStart" form:"comitTimeStart"` ComitTimeEnd string `json:"comitTimeEnd" form:"comitTimeEnd"` AdminDateStart string `json:"adminDateStart" form:"adminDateStart"` AdminDateEnd string `json:"adminDateEnd" form:"adminDateEnd"` bean.Page } type replyLists struct { EnterpriseId uint `json:"enterpriseId"` EnterpriseName string `json:"enterpriseName"` ContractNo string `json:"contractNo"` Source uint `json:"source"` ComitTime formatime.Second `json:"comitTime"` AdminDate formatime.Second `json:"adminDate"` StateInfo string `json:"stateInfo"` SourceName string `json:"sourceName"` State string `json:"state"` } // @Style 待审核列表 func (e *Enterprise) ListsAuditing(c *gin.Context) { args := argsList{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } total, lists := logic.EnterpriseLogic.Lists(1, args.EnterpriseName, args.ContractNo, args.Source, args.ComitTimeStart, args.ComitTimeEnd, args.AdminDateStart, args.AdminDateEnd, args.Page) resultList := []replyLists{} if len(lists) > 0 { sourceIds := []uint{} for _, state := range lists { sourceIds = append(sourceIds, state.Source) } sourceLists := []gys.GysSource{} dbc.DB.Model(&gys.GysSource{}).Find(&sourceLists, "id in (?)", sourceIds) sorceMap := map[uint]gys.GysSource{} for _, list := range sourceLists { sorceMap[list.Id] = list } for _, state := range lists { resultList = append(resultList, replyLists{ EnterpriseId: state.ID, EnterpriseName: state.EnterpriseName, ContractNo: state.ContractNo, Source: state.Source, ComitTime: state.ComitTime, AdminDate: state.AdminDate, State: state.State, StateInfo: state.StateInfo, SourceName: sorceMap[state.Source].Name, }) } } back.Suc(c, "操作成功", bean.ResultLists{ List: resultList, Total: total, }) } // @Style 通过列表 func (e *Enterprise) ListsAgree(c *gin.Context) { args := argsList{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } total, lists := logic.EnterpriseLogic.Lists(2, args.EnterpriseName, args.ContractNo, args.Source, args.ComitTimeStart, args.ComitTimeEnd, args.AdminDateStart, args.AdminDateEnd, args.Page) resultList := []replyLists{} if len(lists) > 0 { sourceIds := []uint{} for _, state := range lists { sourceIds = append(sourceIds, state.Source) } sourceLists := []gys.GysSource{} dbc.DB.Model(&gys.GysSource{}).Find(&sourceLists, "id in (?)", sourceIds) sorceMap := map[uint]gys.GysSource{} for _, list := range sourceLists { sorceMap[list.Id] = list } for _, state := range lists { resultList = append(resultList, replyLists{ EnterpriseId: state.ID, EnterpriseName: state.EnterpriseName, ContractNo: state.ContractNo, Source: state.Source, ComitTime: state.ComitTime, AdminDate: state.AdminDate, State: state.State, StateInfo: state.StateInfo, SourceName: sorceMap[state.Source].Name, }) } } back.Suc(c, "操作成功", bean.ResultLists{ List: resultList, Total: total, }) } // @Style 驳回列表 func (e *Enterprise) ListsReject(c *gin.Context) { args := argsList{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } total, lists := logic.EnterpriseLogic.Lists(3, args.EnterpriseName, args.ContractNo, args.Source, args.ComitTimeStart, args.ComitTimeEnd, args.AdminDateStart, args.AdminDateEnd, args.Page) resultList := []replyLists{} if len(lists) > 0 { sourceIds := []uint{} for _, state := range lists { sourceIds = append(sourceIds, state.Source) } sourceLists := []gys.GysSource{} dbc.DB.Model(&gys.GysSource{}).Find(&sourceLists, "id in (?)", sourceIds) sorceMap := map[uint]gys.GysSource{} for _, list := range sourceLists { sorceMap[list.Id] = list } for _, state := range lists { resultList = append(resultList, replyLists{ EnterpriseId: state.ID, EnterpriseName: state.EnterpriseName, ContractNo: state.ContractNo, Source: state.Source, ComitTime: state.ComitTime, AdminDate: state.AdminDate, State: state.State, StateInfo: state.StateInfo, SourceName: sorceMap[state.Source].Name, }) } } back.Suc(c, "操作成功", bean.ResultLists{ List: resultList, Total: total, }) } // @Style 审核通过 func (e *Enterprise) Yes(c *gin.Context) { args := logic.ArgsYes{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } if err := logic.EnterpriseLogic.Verified(&args); err != nil { back.Fail(c, err.Error()) return } var user manage.UserInfo user.ID, _ = e.GetManageId(c) if err := dbc.DB.Find(&user).Error; err != nil { back.Fail(c, "数据错误:"+err.Error()) return } state := vend.GysEnterpriseState{} dbc.DB.First(&state, "id = ?", args.EnterpriseId) if state.ID <= 0 { back.Fail(c, "参数错误") return } if state.State != "1" { back.Fail(c, "已审核") return } dbc.DB.Model(&vend.GysEnterpriseState{}).Where("id = ?", args.EnterpriseId).Update(&vend.GysEnterpriseState{ PayTaxes: args.PayTaxes, ContractStart: args.ContractStartTime, ContractEnd: args.ContraceEndTime, Deposit: decimal.NewFromFloat(args.Deposit), Period: args.Period, PaytaxesUrl: args.PaytaxesUrl, State: "2", AdminUser: user.Name, AdminID: user.ID, AdminDate: formatime.NewSecondNow(), }) back.Suc(c, "操作成功", nil) } type argsEnterpriseNo struct { EnterpriseId uint `json:"enterpriseId" form:"enterpriseId"` StateInfo string `json:"stateInfo" form:"stateInfo"` } // @Style 审核通过 func (e *Enterprise) No(c *gin.Context) { args := argsEnterpriseNo{} if err := tools.Params(&args, c); err != nil { back.Fail(c, err.Error()) return } if args.EnterpriseId <= 0 || args.StateInfo == "" { back.Fail(c, "参数错误") return } var user manage.UserInfo user.ID, _ = e.GetManageId(c) if err := dbc.DB.Find(&user).Error; err != nil { back.Fail(c, "数据错误:"+err.Error()) return } state := vend.GysEnterpriseState{} dbc.DB.First(&state, "id = ?", args.EnterpriseId) if state.ID <= 0 { back.Fail(c, "参数错误") return } if state.State != "1" { back.Fail(c, "已审核") return } dbc.DB.Model(&vend.GysEnterpriseState{}).Where("id = ?", args.EnterpriseId).Update(&vend.GysEnterpriseState{ StateInfo: args.StateInfo, State: "3", AdminUser: user.Name, AdminID: user.ID, AdminDate: formatime.NewSecondNow(), }) back.Suc(c, "操作成功", nil) }