|
|
package gysretreat
|
|
|
|
|
|
import (
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
mysql2 "git.oa00.com/go/mysql"
|
|
|
"github.com/golangkit/formatime"
|
|
|
"gorm.io/gorm"
|
|
|
"recook/internal/libs/bean"
|
|
|
"recook/internal/v2/model/gys/enterprise"
|
|
|
"recook/internal/v2/model/gys/gys_retreat"
|
|
|
"recook/internal/v2/model/recook/goods"
|
|
|
"recook/internal/v2/model/recook/message"
|
|
|
"sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
type retreatLogic struct {
|
|
|
}
|
|
|
|
|
|
var RetreatLogic = &retreatLogic{}
|
|
|
|
|
|
/*逻辑层模块*/
|
|
|
func (l retreatLogic) Add(id uint) error {
|
|
|
var gys enterprise.GysEnterpriseStateModel
|
|
|
mysql2.Db.Table(gys.TableName()).Where("user_id=?", id).First(&gys)
|
|
|
if gys.Id == 0 {
|
|
|
return errors.New("请传入正确的供应商id")
|
|
|
}
|
|
|
//开启事务
|
|
|
err := mysql2.Db.Transaction(func(tx *gorm.DB) error {
|
|
|
//下架该供应商的全部商品
|
|
|
if err := tx.Table((&goods.RecookGoodsInfoModel{}).TableName()).Where("vendor_id=?", id).Update("publish_status", 0).Error; err != nil {
|
|
|
return err
|
|
|
}
|
|
|
//给消息中心发送消息,通知供应商退驻
|
|
|
mes := message.AllMessage{
|
|
|
Title: "供应商:" + gys.EnterpriseName + "发起退驻",
|
|
|
Time: time.Now(),
|
|
|
GysId: id,
|
|
|
Type: 6,
|
|
|
Read: 2,
|
|
|
DetailId: id,
|
|
|
ChildType: 0,
|
|
|
ManageRead: 0,
|
|
|
}
|
|
|
if err := tx.Create(&mes).Error; err != nil {
|
|
|
return err
|
|
|
}
|
|
|
//在供应商退驻表中填写资料,存入
|
|
|
retreat := gys_retreat.GysRetreatModel{
|
|
|
GysId: id,
|
|
|
GysName: gys.EnterpriseName,
|
|
|
ContractNo: gys.ContractNo,
|
|
|
GysCode: gys.GysCode,
|
|
|
CreateTime: formatime.NewSecondNow(),
|
|
|
}
|
|
|
if err := tx.Create(&retreat).Error; err != nil {
|
|
|
return err
|
|
|
}
|
|
|
return nil
|
|
|
})
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
//显示供应商退驻列表
|
|
|
func (l retreatLogic) List(name string, no string, code string, startTime string, endTime string, page bean.Page, state uint) (rest []gys_retreat.GysRetreatModel, total int64, err error) {
|
|
|
where := mysql2.Db
|
|
|
timeTap := "2006-01-02 15:04:05"
|
|
|
if state == 0 {
|
|
|
return nil, 0, errors.New("状态必传")
|
|
|
}
|
|
|
if name != "" {
|
|
|
where = where.Where("gys_name like ?", fmt.Sprintf("%%%s%%", name))
|
|
|
}
|
|
|
if no != "" {
|
|
|
where = where.Where("contract_no =?", no)
|
|
|
}
|
|
|
if code != "" {
|
|
|
where = where.Where("gys_code=?", code)
|
|
|
}
|
|
|
if startTime != "" && endTime != "" {
|
|
|
t1, _ := time.ParseInLocation(timeTap, startTime, time.Local)
|
|
|
t2, _ := time.ParseInLocation(timeTap, endTime, time.Local)
|
|
|
where = where.Where("create_time between ? and ?", t1, t2)
|
|
|
}
|
|
|
|
|
|
if state == 1 { //待各部门审核
|
|
|
where = where.Where("(procurement_audit+financial_audit+logistics_audit+customer_audit+operation_audit)<5")
|
|
|
}
|
|
|
if state == 2 { //待管理部门审核
|
|
|
where = where.Where("(procurement_audit+financial_audit+logistics_audit+customer_audit+operation_audit)=5 and management_audit=?", 0)
|
|
|
}
|
|
|
if state == 3 { //退驻的
|
|
|
where = where.Where("end_type=?", 1)
|
|
|
}
|
|
|
mysql2.Db.Table((&gys_retreat.GysRetreatModel{}).TableName()).Where(where).Limit(page.GetLimit()).Offset(page.GetStart()).Find(&rest)
|
|
|
mysql2.Db.Table((&gys_retreat.GysRetreatModel{}).TableName()).Where(where).Count(&total)
|
|
|
return rest, total, nil
|
|
|
}
|
|
|
|
|
|
//var wg sync.WaitGroup
|
|
|
var lock sync.Mutex
|
|
|
|
|
|
func (l retreatLogic) Examined(state uint, uid uint, id uint) error {
|
|
|
//防止幻读,开启线程锁
|
|
|
lock.Lock()
|
|
|
defer lock.Unlock()
|
|
|
//审核内容
|
|
|
if state == 0 || uid == 0 {
|
|
|
return errors.New("审核者id和审核状态为必填项")
|
|
|
}
|
|
|
var p gys_retreat.GysRetreatModel
|
|
|
mysql2.Db.Table(p.TableName()).Where("id=?", id).First(&p)
|
|
|
if p.Id == 0 {
|
|
|
return errors.New("传入id有误")
|
|
|
}
|
|
|
|
|
|
if state == 1 {
|
|
|
//采购审核
|
|
|
var retreat = gys_retreat.GysRetreatModel{
|
|
|
ProcurementAudit: 1,
|
|
|
ProcurementId: uid,
|
|
|
ProcurementTime: formatime.NewSecondNow(),
|
|
|
}
|
|
|
//更新
|
|
|
e := mysql2.Db.Table(retreat.TableName()).Where("id=?", id).Updates(&retreat).Error
|
|
|
if e != nil {
|
|
|
return e
|
|
|
}
|
|
|
}
|
|
|
if state == 2 {
|
|
|
//财务审核
|
|
|
var retreat = gys_retreat.GysRetreatModel{
|
|
|
FinancialAudit: 1,
|
|
|
FinancialId: uid,
|
|
|
FinancialTime: formatime.NewSecondNow(),
|
|
|
}
|
|
|
//更新
|
|
|
e := mysql2.Db.Table(retreat.TableName()).Where("id=?", id).Updates(&retreat).Error
|
|
|
if e != nil {
|
|
|
return e
|
|
|
}
|
|
|
}
|
|
|
if state == 3 {
|
|
|
//物流审核
|
|
|
var retreat = gys_retreat.GysRetreatModel{
|
|
|
LogisticsAudit: 1,
|
|
|
LogisticsId: uid,
|
|
|
LogisticsTime: formatime.NewSecondNow(),
|
|
|
}
|
|
|
//更新
|
|
|
e := mysql2.Db.Table(retreat.TableName()).Where("id=?", id).Updates(&retreat).Error
|
|
|
if e != nil {
|
|
|
return e
|
|
|
}
|
|
|
}
|
|
|
if state == 4 {
|
|
|
//客服审核
|
|
|
var retreat = gys_retreat.GysRetreatModel{
|
|
|
CustomerAudit: 1,
|
|
|
CustomerId: uid,
|
|
|
CustomerTime: formatime.NewSecondNow(),
|
|
|
}
|
|
|
//更新
|
|
|
e := mysql2.Db.Table(retreat.TableName()).Where("id=?", id).Updates(&retreat).Error
|
|
|
if e != nil {
|
|
|
return e
|
|
|
}
|
|
|
}
|
|
|
if state == 5 {
|
|
|
//运营审核
|
|
|
var retreat = gys_retreat.GysRetreatModel{
|
|
|
OperationAudit: 1,
|
|
|
OperationId: uid,
|
|
|
OperationTime: formatime.NewSecondNow(),
|
|
|
}
|
|
|
//更新
|
|
|
e := mysql2.Db.Table(retreat.TableName()).Where("id=?", id).Updates(&retreat).Error
|
|
|
if e != nil {
|
|
|
return e
|
|
|
}
|
|
|
}
|
|
|
if state == 6 {
|
|
|
//管理审核 ,最终pass,end_type变成1
|
|
|
var retreat = gys_retreat.GysRetreatModel{
|
|
|
ManagementAudit: 1,
|
|
|
ManagementId: uid,
|
|
|
ManagementTime: formatime.NewSecondNow(),
|
|
|
EndType: 1,
|
|
|
}
|
|
|
//更新
|
|
|
e := mysql2.Db.Table(retreat.TableName()).Where("id=?", id).Updates(&retreat).Error
|
|
|
if e != nil {
|
|
|
return e
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
}
|