parent
bbbfeb38d2
commit
e3e201d7f4
@ -0,0 +1,85 @@
|
||||
package company
|
||||
|
||||
import (
|
||||
"recook/internal/back"
|
||||
"recook/internal/libs/bean"
|
||||
"recook/internal/v2/lib/common"
|
||||
"recook/internal/v2/logic/company"
|
||||
"recook/tools"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Proxy struct {
|
||||
}
|
||||
|
||||
func (o Proxy) List(c *gin.Context) {
|
||||
var args company.ArgsCompanyList
|
||||
if err := tools.Params(&args, c); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if data, total, err := company.Logic.List(args); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
} else {
|
||||
back.Suc(c, "ok", bean.ResultLists{
|
||||
List: data,
|
||||
Total: int(total),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (o Proxy) All(c *gin.Context) {
|
||||
back.Suc(c, "ok", company.Logic.All())
|
||||
}
|
||||
|
||||
func (o Proxy) Sure(c *gin.Context) {
|
||||
var args company.CompanySureApply
|
||||
if err := tools.Params(&args, c); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
mu, _ := common.GetManageUser(c)
|
||||
args.UserID = mu.Id
|
||||
|
||||
if err := company.Logic.Sure(args); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
} else {
|
||||
back.Suc(c, "ok", "")
|
||||
}
|
||||
}
|
||||
|
||||
func (o Proxy) Reject(c *gin.Context) {
|
||||
var args company.CompanyRejectApply
|
||||
if err := tools.Params(&args, c); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
mu, _ := common.GetManageUser(c)
|
||||
args.UserID = mu.Id
|
||||
|
||||
if err := company.Logic.Reject(args); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
} else {
|
||||
back.Suc(c, "ok", "")
|
||||
}
|
||||
}
|
||||
|
||||
func (o Proxy) Apply(c *gin.Context) {
|
||||
var args company.CompanyInfo
|
||||
if err := tools.Params(&args, c); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
mu, _ := common.GetManageUser(c)
|
||||
args.UserID = mu.Id
|
||||
|
||||
if err := company.Logic.Apply(args); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
} else {
|
||||
back.Suc(c, "ok", "")
|
||||
}
|
||||
}
|
@ -0,0 +1,213 @@
|
||||
package company
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"recook/internal/define"
|
||||
"recook/internal/libs/bean"
|
||||
"recook/internal/service/baseCode"
|
||||
"recook/internal/v2/model/company"
|
||||
"recook/internal/v2/model/recook/manage"
|
||||
"recook/internal/v2/model/recook/user"
|
||||
"time"
|
||||
|
||||
"git.oa00.com/go/mysql"
|
||||
"github.com/golangkit/formatime"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
type logic struct {
|
||||
}
|
||||
|
||||
var Logic = &logic{}
|
||||
|
||||
type ArgsCompanyList struct {
|
||||
bean.Page
|
||||
Name string `json:"name"`
|
||||
Mobile string `json:"mobile"`
|
||||
Contract string `json:"contract"`
|
||||
ApplyUserName string `json:"apply_user_name"`
|
||||
State int `json:"state"`
|
||||
Status int `json:"status"`
|
||||
Start string `json:"start"`
|
||||
End string `json:"end"`
|
||||
}
|
||||
|
||||
func (o logic) List(args ArgsCompanyList) (res []company.Info, total int64, err error) {
|
||||
query := mysql.Db.Table((&company.Info{}).TableName())
|
||||
{
|
||||
if args.Name != "" {
|
||||
query = query.Where("company_name like ?", fmt.Sprintf("%%%s%%", args.Name))
|
||||
}
|
||||
if args.Mobile != "" {
|
||||
query = query.Where("mobile=?", args.Mobile)
|
||||
}
|
||||
if args.Contract != "" {
|
||||
query = query.Where("contract_name like ?", fmt.Sprintf("%%%s%%", args.Contract))
|
||||
}
|
||||
|
||||
if args.Start != "" {
|
||||
query = query.Where("created_at > ?", args.Start)
|
||||
}
|
||||
if args.End != "" {
|
||||
query = query.Where("created_at < ?", args.End)
|
||||
}
|
||||
if args.ApplyUserName != "" {
|
||||
sub := mysql.Db.Table((&manage.RecookManageUserInfoModel{}).TableName()).Select("id").Where("name like ?", fmt.Sprintf("%%%s%%", args.Name))
|
||||
query = query.Where("apply_user_id in (?)", sub)
|
||||
}
|
||||
}
|
||||
query.Count(&total)
|
||||
query.Preload(clause.Associations).Preload("Logs.ManageUserInfo").Offset(args.GetStart()).Limit(args.GetLimit()).Find(&res)
|
||||
return
|
||||
}
|
||||
|
||||
func (o logic) All() (res []string) {
|
||||
mysql.Db.Table((&company.Info{}).TableName()).Pluck("company_name", &res)
|
||||
return
|
||||
}
|
||||
|
||||
type CompanySureApply struct {
|
||||
ID uint `json:""`
|
||||
UserID uint `json:"-"`
|
||||
}
|
||||
|
||||
func (o logic) Sure(args CompanySureApply) error {
|
||||
if err := mysql.Db.Transaction(func(tx *gorm.DB) error {
|
||||
var obj company.Info
|
||||
if err := tx.First(&obj, "id = ?", args.ID).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Model(&obj).Updates(company.Info{
|
||||
State: company.Pass,
|
||||
ProcessUserID: args.UserID,
|
||||
ProcessTime: formatime.NewSecondNow(),
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Create(&company.Log{
|
||||
Text: fmt.Sprintf("审核通过,并创建账号%s", obj.Mobile),
|
||||
UserID: args.UserID,
|
||||
CreatedAt: formatime.NewSecondNow(),
|
||||
CompanyID: args.ID,
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
var u1 user.RecookUserInfoModel
|
||||
if err := tx.First(&u1, "moblie = ?", obj.Mobile).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if u1.Id > 0 {
|
||||
return fmt.Errorf("该账号已存在")
|
||||
} else {
|
||||
mobile := obj.Mobile
|
||||
sql := `select max(id)+floor(1+rand()*5) from recook_user_info`
|
||||
var lastId int64
|
||||
if err := tx.Raw(sql).Count(&lastId).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
info := user.RecookUserInfoModel{
|
||||
Id: uint(lastId),
|
||||
Nickname: "左家右厨" + mobile[7:],
|
||||
Mobile: mobile,
|
||||
Birthday: formatime.NewSecondFrom(define.DefaultBirthday),
|
||||
HeadImgUrl: "",
|
||||
Phone: mobile,
|
||||
Identifier: time.Now().Format("060102") + baseCode.Encode(uint64(lastId)),
|
||||
Level: 10,
|
||||
ParentID: 0,
|
||||
RootID: 0,
|
||||
}
|
||||
|
||||
if err := tx.Create(&info).Error; err != nil {
|
||||
tx.Rollback()
|
||||
err = fmt.Errorf("创建用户错误101:" + err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
// 生成邀请码和推荐码
|
||||
info.InvitationNo = baseCode.Encode(uint64(info.Id))
|
||||
if err := tx.Save(&info).Error; err != nil {
|
||||
err = fmt.Errorf("创建用户错误102:" + err.Error())
|
||||
return err
|
||||
}
|
||||
// 建立钱包
|
||||
wallet := user.RecookUserWalletModel{
|
||||
UserId: info.Id,
|
||||
}
|
||||
if err := tx.Create(&wallet).Error; err != nil {
|
||||
tx.Rollback()
|
||||
err = fmt.Errorf("创建用户错误103:" + err.Error())
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CompanyRejectApply struct {
|
||||
CompanySureApply
|
||||
Reason string `json:"reason" validate:"required,maxLen=20"`
|
||||
}
|
||||
|
||||
func (o logic) Reject(args CompanyRejectApply) error {
|
||||
if err := mysql.Db.Transaction(func(tx *gorm.DB) error {
|
||||
var obj company.Info
|
||||
if err := tx.First(&obj, "id = ?", args.ID).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Model(&obj).Updates(company.Info{
|
||||
State: company.Reject,
|
||||
ProcessUserID: args.UserID,
|
||||
ProcessTime: formatime.NewSecondNow(),
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Create(&company.Log{
|
||||
Text: args.Reason,
|
||||
UserID: args.UserID,
|
||||
CreatedAt: formatime.NewSecondNow(),
|
||||
CompanyID: args.ID,
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CompanyInfo struct {
|
||||
company.Info
|
||||
UserID uint `json:"user_id"`
|
||||
}
|
||||
|
||||
func (o logic) Apply(args CompanyInfo) error {
|
||||
args.State = company.Wait
|
||||
args.CreatedAt = formatime.NewSecondNow()
|
||||
args.Logs = nil
|
||||
args.ID = 0
|
||||
if err := mysql.Db.Transaction(func(tx *gorm.DB) error {
|
||||
if err := tx.Create(&args).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Create(&company.Log{
|
||||
Text: "发起了申请",
|
||||
UserID: args.UserID,
|
||||
CreatedAt: formatime.NewSecondNow(),
|
||||
CompanyID: args.ID,
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
package company
|
||||
|
||||
import (
|
||||
"recook/internal/v2/model/recook/manage"
|
||||
|
||||
"github.com/golangkit/formatime"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
type State uint
|
||||
|
||||
const (
|
||||
Wait State = iota + 1
|
||||
Pass
|
||||
Reject
|
||||
)
|
||||
|
||||
var stateMap = map[State]string{
|
||||
Wait: "待审核",
|
||||
Pass: "已通过",
|
||||
Reject: "已驳回",
|
||||
}
|
||||
|
||||
func (o State) Str() string {
|
||||
return stateMap[o]
|
||||
}
|
||||
|
||||
type Status uint
|
||||
|
||||
const (
|
||||
Normal Status = iota + 1
|
||||
Disable
|
||||
)
|
||||
|
||||
var statusMap = map[Status]string{
|
||||
Normal: "正常",
|
||||
Disable: "禁用",
|
||||
}
|
||||
|
||||
func (o Status) Str() string {
|
||||
return statusMap[o]
|
||||
}
|
||||
|
||||
type Info struct {
|
||||
ID uint `json:"id"`
|
||||
ShopName string `json:"shop_name"`
|
||||
Mobile string `json:"mobile"`
|
||||
ContractName string `json:"contract_name"`
|
||||
ContractMobile string `json:"contract_mobile"`
|
||||
ContractEmail string `json:"contract_email"`
|
||||
ProcessUserID uint `json:"-"`
|
||||
ProcessUserInfo manage.RecookManageUserInfoModel `json:"-" gorm:"foreignKey:process_user_id"`
|
||||
ProcessUserName string `json:"process_user_name" gorm:"-"`
|
||||
ProcessTime formatime.Second `json:"process_time"`
|
||||
ContractNo string `json:"contract_no"`
|
||||
ContractStart formatime.Second `json:"contract_start"`
|
||||
ContractEnd formatime.Second `json:"contract_end"`
|
||||
ContractAttach string `json:"contract_attach"`
|
||||
CompanyName string `json:"company_name"`
|
||||
RegisterAddress string `json:"register_address"`
|
||||
BusinessAddress string `json:"business_address"`
|
||||
BusinessStart formatime.Second `json:"business_start"`
|
||||
BusinessEnd formatime.Second `json:"business_end"`
|
||||
BusinessPhoto string `json:"business_photo"`
|
||||
BusinessPerson string `json:"business_person"`
|
||||
TaxType string `json:"tax_type"`
|
||||
TaxBank string `json:"tax_bank"`
|
||||
TaxNumber string `json:"tax_number"`
|
||||
TaxAccount string `json:"tax_account"`
|
||||
TaxPhoto string `json:"tax_photo"`
|
||||
TaxProve string `json:"tax_prove"`
|
||||
CreatedAt formatime.Second `json:"created_at"`
|
||||
ApplyUserID uint `json:"-"`
|
||||
ApplyUserInfo manage.RecookManageUserInfoModel `json:"-" gorm:"foreignKey:apply_user_id"`
|
||||
ApplyUserName string `json:"apply_user_name" gorm:"-"`
|
||||
State State `json:"state"`
|
||||
StateStr string `json:"state_str" gorm:"-"`
|
||||
Status Status `json:"status"`
|
||||
StatusStr string `json:"status_str" gorm:"-"`
|
||||
Logs []Log `json:"log" gorm:"foreignKey:company_id"`
|
||||
}
|
||||
|
||||
func (o *Info) TableName() string {
|
||||
return "jyy_company_info"
|
||||
}
|
||||
|
||||
func (o *Info) AfterFind(db *gorm.DB) error {
|
||||
o.ProcessUserName = o.ProcessUserInfo.Name
|
||||
o.ApplyUserName = o.ApplyUserInfo.Name
|
||||
o.StateStr = o.State.Str()
|
||||
o.StatusStr = o.Status.Str()
|
||||
return nil
|
||||
}
|
||||
|
||||
type Log struct {
|
||||
ID uint `json:"id"`
|
||||
Text string `json:"text"`
|
||||
UserID uint `json:"-"`
|
||||
ManageUserInfo manage.RecookManageUserInfoModel `json:"-" gorm:"foreignKey:user_id"`
|
||||
ManageUserName string `json:"manage_user_name" gorm:"-"`
|
||||
CreatedAt formatime.Second `json:"created_at"`
|
||||
CompanyID uint `json:"company_i"`
|
||||
}
|
||||
|
||||
func (o Log) TableName() string {
|
||||
return "jyy_company_log"
|
||||
}
|
||||
|
||||
func (o *Log) AfterFind(db *gorm.DB) error {
|
||||
o.ManageUserName = o.ManageUserInfo.Name
|
||||
return nil
|
||||
}
|
Loading…
Reference in new issue