Browse Source

fix_充值&开票

Ethan 12 hours ago
parent
commit
d6c8419dec

+ 19 - 1
app/controller/finance_controller.go

@@ -174,11 +174,29 @@ func (f FinanceController) RechargeInfoCount(c *gin.Context) {
 	returnSuccess(c, 20000, result)
 }
 
+// 获取企业公司名、税号、注册地址
+func (f FinanceController) GetEnterpriseMessage(c *gin.Context) {
+	param := &vo.InvoiceDefaultParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	reInvoiceInfo, err := service.InvoiceService{}.GetEnterpriseMessage(param)
+	if err != nil {
+		logrus.Errorf("[GetEnterpriseMessage] call Show err:%+v\n", err)
+		returnError(c, 40000, err.Error())
+		return
+	}
+	returnSuccess(c, 20000, reInvoiceInfo)
+}
+
 // 设置默认开票抬头
 func (f FinanceController) UpdateInvoiceDefault(c *gin.Context) {
 	param := &vo.InvoiceDefaultParam{}
 	err := c.BindJSON(param)
-	if err != nil {
+	if err != nil || param.EnterpriseId == "" {
 		logrus.Errorf("Request bind err:%+v\n", err)
 		returnError(c, 40000, "Parameter Error: "+err.Error())
 		return

+ 4 - 5
app/dao/invoice_info_dao.go

@@ -19,18 +19,17 @@ func (d InvoiceInfoDao) Select(invoiceId int64) (*entity.InvoiceInfo, error) {
 	return &invoiceInfo, nil
 }
 
-func (d InvoiceInfoDao) Delete(invoiceId int64) error {
-	var invoiceInfo entity.InvoiceInfo
-	err := Db.Debug().Model(&entity.InvoiceInfo{}).Where("invoice_id = ?", invoiceId).Delete(&invoiceInfo).Error
+func (d InvoiceInfoDao) Delete(invoiceInfo entity.InvoiceInfo) error {
+	err := Db.Where(invoiceInfo).Delete(&entity.InvoiceInfo{}).Error
 	if err != nil {
 		return err
 	}
 	return nil
 }
 
-func (d InvoiceInfoDao) SelectDefault(enterpriseId string, invoiceType int64, isDefault int64) (*entity.InvoiceInfo, error) {
+func (d InvoiceInfoDao) SelectDefault(enterpriseId string, invoiceType int64) (*entity.InvoiceInfo, error) {
 	var invoiceInfo entity.InvoiceInfo
-	err := Db.Debug().Model(&entity.InvoiceInfo{}).Where("enterprise_id = ? AND invoice_type = ? AND is_default = ?", enterpriseId, invoiceType, isDefault).Find(&invoiceInfo).Error
+	err := Db.Debug().Model(&entity.InvoiceInfo{}).Where("enterprise_id = ? AND invoice_type = ?", enterpriseId, invoiceType).Find(&invoiceInfo).Error
 	if err != nil {
 		if err == gorm.ErrRecordNotFound {
 			return &invoiceInfo, nil

+ 2 - 2
app/dao/recharge_record_dao.go

@@ -9,7 +9,7 @@ import (
 type RechargeRecordDao struct{}
 
 func (d RechargeRecordDao) Insert(rechargeRecord *entity.RechargeRecord) error {
-	err := Db.Debug().Model(entity.RechargeRecord{}).Omit("confirm_at", "refuse_at").Create(rechargeRecord).Error
+	err := Db.Debug().Model(entity.RechargeRecord{}).Create(rechargeRecord).Error
 	if err != nil {
 		return err
 	}
@@ -62,7 +62,7 @@ func (d RechargeRecordDao) RechargeStatusCount(enterpriseId string, rechargeStat
 }
 
 // 更新充值状态
-func (d RechargeRecordDao) UpdateRechargeStatus(rechargeId string, status int64, t time.Time) error {
+func (d RechargeRecordDao) UpdateRechargeStatus(rechargeId string, status int64, t *time.Time) error {
 	rechargeRecord := entity.RechargeRecord{
 		Status: status,
 	}

+ 2 - 0
app/entity/enterprise.go

@@ -23,6 +23,8 @@ type Enterprise struct {
 	UpdatedAt        time.Time `gorm:"column:updated_at"`        // 更新时间
 	AuthStatus       int64     `gorm:"column:auth_status"`
 	Phone            string    `gorm:"column:phone"`
+	BusinessLicense  string    `gorm:"column:business_license"` // 营业执照url
+	Usci             string    `gorm:"column:usci"`             // 统一社会信用代码
 }
 
 func (m *Enterprise) TableName() string {

+ 11 - 12
app/entity/invoice_info.go

@@ -5,18 +5,17 @@ import "time"
 // Code generated by sql2gorm. DO NOT EDIT.
 
 type InvoiceInfo struct {
-	InvoiceID         int64     `gorm:"column:invoice_id;primary_key;AUTO_INCREMENT"` // 发票信息id
-	EnterpriseID      string    `gorm:"column:enterprise_id;NOT NULL"`                // 企业id
-	InvoiceType       int64     `gorm:"column:invoice_type;NOT NULL"`                 // 发票类型
-	HeadType          string    `gorm:"column:head_type;NOT NULL"`                    // 抬头类型
-	InvoiceHeader     string    `gorm:"column:invoice_header;NOT NULL"`               // 发票抬头
-	TaxCode           string    `gorm:"column:tax_code;NOT NULL"`                     // 税务登记证号/统一社会信用代码
-	RegisteredAddress string    `gorm:"column:registered_address;NOT NULL"`           // 企业注册地址
-	RegisteredPhone   string    `gorm:"column:registered_phone;NOT NULL"`             // 企业注册电话
-	Bank              string    `gorm:"column:bank;NOT NULL"`                         // 开户银行
-	BankCardNumber    string    `gorm:"column:bank_card_number;NOT NULL"`             // 开户银行账号
-	IsDefault         int64     `gorm:"column:is_default;NOT NULL"`                   // 1默认抬头
-	UpdateAt          time.Time `gorm:"column:update_at;NOT NULL"`                    // 更新时间
+	InvoiceID         int64      `gorm:"column:invoice_id;primary_key;AUTO_INCREMENT"` // 发票信息id
+	EnterpriseID      string     `gorm:"column:enterprise_id;NOT NULL"`                // 企业id
+	InvoiceType       int64      `gorm:"column:invoice_type;NOT NULL"`                 // 发票类型
+	HeadType          string     `gorm:"column:head_type;NOT NULL"`                    // 抬头类型(企业/个人)
+	InvoiceHeader     string     `gorm:"column:invoice_header"`                        // 发票抬头
+	TaxCode           string     `gorm:"column:tax_code"`                              // 税务登记证号/统一社会信用代码
+	RegisteredAddress string     `gorm:"column:registered_address"`                    // 企业注册地址
+	RegisteredPhone   string     `gorm:"column:registered_phone;NOT NULL"`             // 企业注册电话
+	Bank              string     `gorm:"column:bank;NOT NULL"`                         // 开户银行
+	BankCardNumber    string     `gorm:"column:bank_card_number;NOT NULL"`             // 开户银行账号
+	UpdateAt          *time.Time `gorm:"column:update_at"`                             // 更新时间
 }
 
 func (m *InvoiceInfo) TableName() string {

+ 14 - 14
app/entity/recharge_record.go

@@ -3,20 +3,20 @@ package entity
 import "time"
 
 type RechargeRecord struct {
-	ID                 int64     `gorm:"column:id;primary_key;column:id"`
-	RechargeID         string    `gorm:"column:recharge_id;unique_key"` // 充值订单ID
-	EnterpriseID       string    `gorm:"column:enterprise_id;NOT NULL"` // 企业id
-	SubAccountId       int64     `gorm:"column:sub_account_id;NOT NULL"`
-	RechargeAmount     float64   `gorm:"column:recharge_amount;NOT NULL"`      // 充值金额
-	TransferVoucherUrl string    `gorm:"column:transfer_voucher_url;NOT NULL"` // 转账凭证图片链接
-	Phone              string    `gorm:"column:phone;NOT NULL"`                // 联系方式
-	RechargeMethod     int64     `gorm:"column:recharge_method;NOT NULL"`      // 充值方式:1为对公转账,2为支付宝在线支付,3为微信支付
-	Status             int64     `gorm:"column:status;NOT NULL"`               // 充值状态:0为充值待确认,1为充值已确认
-	InvoiceStatus      int       `gorm:"column:invoice_status;NOT NULL"`       // 开票状态:1为可开票,2为待开票,3为已开票
-	CommitAt           time.Time `gorm:"column:commit_at;NOT NULL"`            // 充值申请提交时间
-	ConfirmAt          time.Time `gorm:"column:confirm_at"`                    // 充值确认时间
-	FailReason         string    `gorm:"column:fail_reason;NOT NULL"`          // 失败原因
-	RefuseAt           time.Time `gorm:"column:refuse_at;NOT NULL"`            // 充值失败时间
+	ID                 int64      `gorm:"column:id;primary_key;column:id"`
+	RechargeID         string     `gorm:"column:recharge_id;unique_key"` // 充值订单ID
+	EnterpriseID       string     `gorm:"column:enterprise_id;NOT NULL"` // 企业id
+	SubAccountId       int64      `gorm:"column:sub_account_id;NOT NULL"`
+	RechargeAmount     float64    `gorm:"column:recharge_amount;NOT NULL"`      // 充值金额
+	TransferVoucherUrl string     `gorm:"column:transfer_voucher_url;NOT NULL"` // 转账凭证图片链接
+	Phone              string     `gorm:"column:phone;NOT NULL"`                // 联系方式
+	RechargeMethod     int64      `gorm:"column:recharge_method;NOT NULL"`      // 充值方式:1为对公转账,2为支付宝在线支付,3为微信支付
+	Status             int64      `gorm:"column:status;NOT NULL"`               // 充值状态:0为充值待确认,1为充值已确认
+	InvoiceStatus      int        `gorm:"column:invoice_status;NOT NULL"`       // 开票状态:1为可开票,2为待开票,3为已开票
+	CommitAt           *time.Time `gorm:"column:commit_at;NOT NULL"`            // 充值申请提交时间
+	ConfirmAt          *time.Time `gorm:"column:confirm_at"`                    // 充值确认时间
+	FailReason         string     `gorm:"column:fail_reason"`                   // 失败原因
+	RefuseAt           *time.Time `gorm:"column:refuse_at"`                     // 充值失败时间
 }
 
 func (m *RechargeRecord) TableName() string {

+ 39 - 38
app/service/invoice_service.go

@@ -4,7 +4,6 @@ import (
 	"encoding/json"
 	"fmt"
 	"time"
-	"youngee_b_api/app/consts"
 	"youngee_b_api/app/dao"
 	"youngee_b_api/app/entity"
 	"youngee_b_api/app/util"
@@ -13,38 +12,43 @@ import (
 
 type InvoiceService struct{}
 
-// 设置默认开票抬头
-func (s InvoiceService) UpdateInvoiceDefault(param *vo.InvoiceDefaultParam) (*int64, error) {
-	var err error
-	invoiceInfo, err := dao.InvoiceInfoDao{}.SelectDefault(param.EnterpriseId, param.InvoiceType, 1)
+// 获取企业公司名、税号、注册地址
+func (s InvoiceService) GetEnterpriseMessage(param *vo.InvoiceDefaultParam) (*vo.ReInvoiceInfo, error) {
+	enterpriseInfor, err := dao.EnterpriseDao{}.GetEnterpriseInfo(param.EnterpriseId)
 	if err != nil {
 		return nil, err
 	}
-	if invoiceInfo != nil && invoiceInfo.InvoiceID != 0 {
-		err := dao.InvoiceInfoDao{}.Delete(invoiceInfo.InvoiceID)
-		if err != nil {
-			return nil, err
-		}
-	}
-	if param.HeadType == 0 {
-		param.HeadType = 1
+	reInvoiceInfo := &vo.ReInvoiceInfo{
+		InvoiceHeader:     enterpriseInfor.BusinessName,
+		TaxCode:           enterpriseInfor.TaxNumber,
+		RegisteredAddress: enterpriseInfor.Address,
 	}
-	enterprise, err1 := dao.EnterpriseDao{}.GetEnterpriseInfo(param.EnterpriseId)
-	if err1 != nil {
-		return nil, err1
+	return reInvoiceInfo, nil
+}
+
+// 设置默认开票抬头(只针对数电专票)
+func (s InvoiceService) UpdateInvoiceDefault(param *vo.InvoiceDefaultParam) (*int64, error) {
+	err := dao.InvoiceInfoDao{}.Delete(entity.InvoiceInfo{
+		EnterpriseID: param.EnterpriseId,
+		InvoiceType:  2,
+	})
+	if err != nil {
+		return nil, err
 	}
+	//enterprise, err1 := dao.EnterpriseDao{}.GetEnterpriseInfo(param.EnterpriseId)
+	//if err1 != nil {
+	//	return nil, err1
+	//}
 	invoiceInfoAdd := entity.InvoiceInfo{
-		EnterpriseID:      param.EnterpriseId,
-		InvoiceType:       param.InvoiceType,
-		HeadType:          consts.GetHeadType(param.HeadType),
-		InvoiceHeader:     enterprise.BusinessName,
-		TaxCode:           enterprise.TaxNumber,
-		RegisteredAddress: enterprise.Address,
-		RegisteredPhone:   param.RegisteredPhone,
-		Bank:              param.Bank,
-		BankCardNumber:    param.BankCardNumber,
-		IsDefault:         1,
-		UpdateAt:          time.Now(),
+		EnterpriseID: param.EnterpriseId,
+		InvoiceType:  2,
+		//InvoiceHeader:     enterprise.BusinessName,
+		//TaxCode:           enterprise.TaxNumber,
+		//RegisteredAddress: enterprise.Address,
+		// 只有数电专票且注册电话、开户银行、银行账号可修改
+		RegisteredPhone: param.RegisteredPhone,
+		Bank:            param.Bank,
+		BankCardNumber:  param.BankCardNumber,
 	}
 	err = dao.InvoiceInfoDao{}.Insert(&invoiceInfoAdd)
 	if err != nil {
@@ -54,22 +58,19 @@ func (s InvoiceService) UpdateInvoiceDefault(param *vo.InvoiceDefaultParam) (*in
 	return &invoiceInfoAdd.InvoiceID, nil
 }
 
-// 获取默认开票抬头
+// 获取默认数电专票开票抬头
 func (s InvoiceService) GetInvoiceDefault(param *vo.InvoiceDefaultParam) (*vo.ReInvoiceInfo, error) {
-	invoiceInfo, err := dao.InvoiceInfoDao{}.SelectDefault(param.EnterpriseId, param.InvoiceType, 1)
+	invoiceInfo, err := dao.InvoiceInfoDao{}.SelectDefault(param.EnterpriseId, 2)
 	if err != nil {
 		return nil, err
 	}
-	reInvoiceInfo := &vo.ReInvoiceInfo{
-		InvoiceHeader:     invoiceInfo.InvoiceHeader,
-		TaxCode:           invoiceInfo.TaxCode,
-		RegisteredAddress: invoiceInfo.RegisteredAddress,
-		RegisteredPhone:   invoiceInfo.RegisteredPhone,
-		Bank:              invoiceInfo.Bank,
-		BankCardNumber:    invoiceInfo.BankCardNumber,
-		IsDefault:         invoiceInfo.IsDefault,
+	var reInvoiceInfo vo.ReInvoiceInfo
+	if invoiceInfo != nil {
+		reInvoiceInfo.RegisteredPhone = invoiceInfo.RegisteredPhone
+		reInvoiceInfo.Bank = invoiceInfo.Bank
+		reInvoiceInfo.BankCardNumber = invoiceInfo.BankCardNumber
 	}
-	return reInvoiceInfo, nil
+	return &reInvoiceInfo, nil
 }
 
 // 确认开票

+ 9 - 6
app/service/recharge_service.go

@@ -32,6 +32,7 @@ func (s RechargeService) TransferToPublic(param *vo.RechargeTransferParam) (*str
 	//}
 	rechargeId = util.GenerateDateRelatedUUID(16)
 	phone, _ = dao.EnterpriseDao{}.GetEnterprisePhone(param.EnterpriseId)
+	var t = time.Now()
 	rechargeRecord := entity.RechargeRecord{
 		RechargeID:         rechargeId,
 		EnterpriseID:       param.EnterpriseId,
@@ -41,7 +42,7 @@ func (s RechargeService) TransferToPublic(param *vo.RechargeTransferParam) (*str
 		Phone:              phone,
 		RechargeMethod:     1,
 		Status:             1,
-		CommitAt:           time.Now(),
+		CommitAt:           &t,
 	}
 	err := dao.RechargeRecordDao{}.Insert(&rechargeRecord)
 	if err != nil {
@@ -107,6 +108,7 @@ func (s RechargeService) NativeApiServicePrepay(enterpriseId string, subAccountI
 
 	// 生成充值记录
 	phone, _ := dao.EnterpriseDao{}.GetEnterprisePhone(enterpriseId)
+	var t = time.Now()
 	rechargeRecord := entity.RechargeRecord{
 		RechargeID:     tradeId,
 		EnterpriseID:   enterpriseId,
@@ -115,8 +117,8 @@ func (s RechargeService) NativeApiServicePrepay(enterpriseId string, subAccountI
 		Phone:          phone,
 		RechargeMethod: 2,
 		Status:         1,
-		CommitAt:       time.Now(),
-		RefuseAt:       timeExpire,
+		CommitAt:       &t,
+		RefuseAt:       &timeExpire,
 	}
 	err = dao.RechargeRecordDao{}.Insert(&rechargeRecord)
 	if err != nil {
@@ -172,14 +174,15 @@ func (s RechargeService) QueryOrderByTradeId(enterpriseId string, subAccountId i
 	if "SUCCESS" == *resp.TradeState {
 		payTime := resp.SuccessTime
 		t, _ := time.Parse("2006-01-02 15:04:05", *payTime)
-		err = dao.RechargeRecordDao{}.UpdateRechargeStatus(tradeId, 2, t)
+		err = dao.RechargeRecordDao{}.UpdateRechargeStatus(tradeId, 2, &t)
 		amount := float64(*resp.Amount.Total) / 100
 		_, err = dao.EnterpriseDao{}.UpdateEnterpriseBalance(enterpriseId, amount)
 	} else if "CLOSED" == *resp.TradeState {
-		err = dao.RechargeRecordDao{}.UpdateRechargeStatus(tradeId, 3, time.Now())
+		var t = time.Now()
+		err = dao.RechargeRecordDao{}.UpdateRechargeStatus(tradeId, 3, &t)
 	}
 
-	return *resp.TradeState, nil
+	return *resp.TradeState, err
 }
 
 // 余额管理——总金额、可用余额、冻结金额

+ 6 - 5
app/service/review_service/business_license_check.go

@@ -22,11 +22,12 @@ func (c *Config) CheckBusinessLicense(param *vo.IdentifyParam) (map[string]strin
 	address := result.Address
 	bodyType := result.Type // 公司/企业类型/主体类型/类型
 	err1 := dao.EnterpriseDao{}.UpdateEnterprise(entity.Enterprise{
-		EnterpriseID: param.EnterpriseId,
-		BusinessName: *companyName,
-		TaxNumber:    *registrationNumber,
-		Address:      *address,
-		AuthStatus:   1,
+		EnterpriseID:    param.EnterpriseId,
+		BusinessName:    *companyName,
+		TaxNumber:       *registrationNumber,
+		Address:         *address,
+		BusinessLicense: param.BusinessLicenseUrl,
+		AuthStatus:      1,
 	})
 	if err1 != nil {
 		return nil, err1

+ 3 - 3
app/vo/invoice_default_param.go

@@ -2,12 +2,12 @@ package vo
 
 type InvoiceDefaultParam struct {
 	EnterpriseId string `json:"enterprise_id"`
-	HeadType     int64  `json:"head_type"`    // 抬头类型(1企业 2个人)
-	InvoiceType  int64  `json:"invoice_type"` // 发票类型(1数电普票 2数电专票)
+	//HeadType     int64  `json:"head_type"` // 抬头类型(1企业 2个人)
+	//InvoiceType  int64  `json:"invoice_type"` // 发票类型(1数电普票 2数电专票)
 	//InvoiceHead  string `json:"invoice_head"` //发票抬头(企业名称)
 	//TaxCode      string `json:"tax_code"`     // 企业税号
-
 	//RegisteredAddress string `json:"registered_address"` // 企业注册地址
+
 	RegisteredPhone string `json:"registered_phone"` // 企业注册电话
 	Bank            string `json:"bank"`             // 开户银行
 	BankCardNumber  string `json:"bank_card_number"` // 银行账号

+ 1 - 2
app/vo/re_invoice_info.go

@@ -1,11 +1,10 @@
 package vo
 
 type ReInvoiceInfo struct {
-	InvoiceHeader     string `json:"invoiceHeader"`     // 发票抬头
+	InvoiceHeader     string `json:"invoiceHeader"`     // 发票抬头(企业公司名)
 	TaxCode           string `json:"taxCode"`           // 税务登记证号/统一社会信用代码
 	RegisteredAddress string `json:"registeredAddress"` // 企业注册地址
 	RegisteredPhone   string `json:"registeredPhone"`   // 企业注册电话
 	Bank              string `json:"bank"`              // 开户银行
 	BankCardNumber    string `json:"bankCardNumber"`    // 开户银行账号
-	IsDefault         int64  `json:"isDefault"`         // 1默认抬头
 }

+ 3 - 2
route/init.go

@@ -365,8 +365,9 @@ func InitRoute(r *gin.Engine) {
 		finance.POST("/recharge/count", controller.FinanceController{}.RechargeInfoCount)            // 充值管理——充值记录-角标
 		// YG官方汇款账号
 
-		finance.POST("/invoice/default/update", controller.FinanceController{}.UpdateInvoiceDefault) // 设置默认开票抬头
-		finance.POST("/invoice/default/get", controller.FinanceController{}.GetInvoiceDefault)       // 获取默认开票抬头
+		finance.POST("/invoice/talent", controller.FinanceController{}.GetEnterpriseMessage)         // 获取默认开票抬头
+		finance.POST("/invoice/default/update", controller.FinanceController{}.UpdateInvoiceDefault) // 设置默认开票信息(专票)
+		finance.POST("/invoice/default/get", controller.FinanceController{}.GetInvoiceDefault)       // 获取默认开票信息(专票)
 		finance.POST("/invoice/bill", controller.FinanceController{}.BillInvoice)                    // 确认开票
 		finance.POST("/invoice/list/bill", controller.FinanceController{}.GetBillList)               // 开票记录
 		finance.POST("/invoice/list/billable", controller.FinanceController{}.GetBillableList)       // 可开票账单