diff --git a/app/admin/apis/erpordermanage/erp_order.go b/app/admin/apis/erpordermanage/erp_order.go index 691d529..07980c2 100644 --- a/app/admin/apis/erpordermanage/erp_order.go +++ b/app/admin/apis/erpordermanage/erp_order.go @@ -234,6 +234,7 @@ func ErpOrderAudit(c *gin.Context) { "audit_time": time.Now(), "auditor_name": sysUser.NickName, "auditor_id": sysUser.UserId, + "updated_at": time.Now(), }).Error if err != nil { begin.Rollback() diff --git a/app/admin/models/decision.go b/app/admin/models/decision.go index 5e8d8e0..a18cd25 100644 --- a/app/admin/models/decision.go +++ b/app/admin/models/decision.go @@ -332,6 +332,9 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR } // 查询期初库存、期初金额 +// 没有时间:默认为系统入库数量 +// 某一天:默认系统入库数量 - 某一天前的所有出库数量 + 某一天前的所有入库数量 +// 某个时间段:默认系统入库数量 - 开始时间前的所有出库数量 + 开始时间前的所有入库数量 func getSystemStartCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionReportData, error) { var reportData DecisionReportData @@ -344,7 +347,7 @@ func getSystemStartCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRep logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time > ?", parse) + qs = qs.Where("created_at > ?", parse) } if req.EndTime != "" { // 出入库结束时间 @@ -353,7 +356,7 @@ func getSystemStartCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRep logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time <= ?", parse) + qs = qs.Where("created_at <= ?", parse) } var err error @@ -446,7 +449,7 @@ func getPurchaseReturnCount(req *ErpDecisionReportReq, stock ErpStock) (Decision logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time > ?", parse) + qs = qs.Where("created_at > ?", parse) } if req.EndTime != "" { // 出入库结束时间 @@ -455,7 +458,7 @@ func getPurchaseReturnCount(req *ErpDecisionReportReq, stock ErpStock) (Decision logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time <= ?", parse) + qs = qs.Where("created_at <= ?", parse) } var err error @@ -593,7 +596,7 @@ func getProductCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionReportD logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time > ?", parse) + qs = qs.Where("created_at > ?", parse) } if req.EndTime != "" { // 出入库结束时间 @@ -602,7 +605,7 @@ func getProductCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionReportD logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time <= ?", parse) + qs = qs.Where("created_at <= ?", parse) } var err error @@ -758,7 +761,7 @@ func getSystemOutCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRepor logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time > ?", parse) + qs = qs.Where("created_at > ?", parse) } if req.EndTime != "" { // 出入库结束时间 @@ -767,7 +770,7 @@ func getSystemOutCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRepor logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time <= ?", parse) + qs = qs.Where("created_at <= ?", parse) } var err error @@ -1028,7 +1031,7 @@ func getSystemEndCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRepor logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time > ?", parse) + qs = qs.Where("created_at > ?", parse) } if req.EndTime != "" { // 出入库结束时间 @@ -1037,7 +1040,7 @@ func getSystemEndCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRepor logger.Errorf("getSystemStartCount err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time <= ?", parse) + qs = qs.Where("created_at <= ?", parse) } var err error @@ -1074,7 +1077,7 @@ func getSumStockData(req *ErpDecisionReportReq) (DecisionReportData, error) { logger.Errorf("getStockData err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time > ?", parse) + qs = qs.Where("created_at > ?", parse) } if req.EndTime != "" { @@ -1083,7 +1086,7 @@ func getSumStockData(req *ErpDecisionReportReq) (DecisionReportData, error) { logger.Errorf("getStockData err:", err) return DecisionReportData{}, err } - qs = qs.Where("first_stock_time <= ?", parse) + qs = qs.Where("created_at <= ?", parse) } if len(req.StoreId) > 0 { diff --git a/app/admin/models/erp_order.go b/app/admin/models/erp_order.go index 0c9ba11..0cd8a12 100644 --- a/app/admin/models/erp_order.go +++ b/app/admin/models/erp_order.go @@ -898,7 +898,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { } err = gdb.Table("erp_stock_commodity").Where("imei = ?", commodities[i].IMEI). - Updates(map[string]interface{}{"state": state}).Error // 状态更新为已销售;反审核则更新为在库 + Updates(map[string]interface{}{ + "state": state, + "updated_at": time.Now(), + }).Error // 状态更新为已销售;反审核则更新为在库 if err != nil { logger.Error("commodities err:", logger.Field("err", err)) return err @@ -907,7 +910,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { if state == SoldOut { // 已售的订单才更新库存数量 err = gdb.Table("erp_stock").Where("store_id = ? and erp_commodity_id = ?", erpOrder.StoreId, commodities[i].ErpCommodityId). - Updates(map[string]interface{}{"count": gorm.Expr("count - ?", 1)}).Error // 库存数量-1 + Updates(map[string]interface{}{ + "count": gorm.Expr("count - ?", 1), + "updated_at": time.Now(), + }).Error // 库存数量-1 if err != nil { logger.Error("commodities err:", logger.Field("err", err)) return err @@ -915,7 +921,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { } else { // 反审核时则库存数量+1 err = gdb.Table("erp_stock").Where("store_id = ? and erp_commodity_id = ?", erpOrder.StoreId, commodities[i].ErpCommodityId). - Updates(map[string]interface{}{"count": gorm.Expr("count + ?", 1)}).Error // 库存数量+1 + Updates(map[string]interface{}{ + "count": gorm.Expr("count + ?", 1), + "updated_at": time.Now(), + }).Error // 库存数量+1 if err != nil { logger.Error("commodities err:", logger.Field("err", err)) return err @@ -924,7 +933,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { } else { // 非串码商品 if state == InStock { // 零售订单反审核 err = gdb.Table("erp_stock_commodity").Where("id = ?", commodities[i].ErpStockCommodityID). - Updates(map[string]interface{}{"state": state}).Error // 状态更新为在库 + Updates(map[string]interface{}{ + "state": state, + "updated_at": time.Now(), + }).Error // 状态更新为在库 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -932,7 +944,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { err = gdb.Table("erp_stock").Where("store_id = ? and erp_commodity_id = ?", erpOrder.StoreId, commodities[i].ErpCommodityId). - Updates(map[string]interface{}{"count": gorm.Expr("count + ?", 1)}).Error // 库存数量+1 + Updates(map[string]interface{}{ + "count": gorm.Expr("count + ?", 1), + "updated_at": time.Now(), + }).Error // 库存数量+1 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -949,7 +964,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { } else { // 正常销售 if commodities[i].ErpStockCommodityID != "" { // 零售退货单反审核,默认当作销售单 err = gdb.Table("erp_stock_commodity").Where("id = ?", commodities[i].ErpStockCommodityID). - Updates(map[string]interface{}{"state": SoldOut}).Error // 状态更新为在库 + Updates(map[string]interface{}{ + "state": SoldOut, + "updated_at": time.Now(), + }).Error // 状态更新为在库 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -957,7 +975,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { err = gdb.Table("erp_stock").Where("store_id = ? and erp_commodity_id = ?", erpOrder.StoreId, commodities[i].ErpCommodityId). - Updates(map[string]interface{}{"count": gorm.Expr("count - ?", 1)}).Error // 库存数量-1 + Updates(map[string]interface{}{ + "count": gorm.Expr("count - ?", 1), + "updated_at": time.Now(), + }).Error // 库存数量-1 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -993,7 +1014,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { // 优先出库库存时间最长的数据 err = gdb.Table("erp_stock_commodity").Where("id = ?", rightId). - Updates(map[string]interface{}{"state": state}).Error // 状态更新为销售锁定中;反审核则更新为在库 + Updates(map[string]interface{}{ + "state": state, + "updated_at": time.Now(), + }).Error // 状态更新为销售锁定中;反审核则更新为在库 if err != nil { logger.Error("commodities err:", logger.Field("err", err)) return err @@ -1002,7 +1026,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { if state == SoldOut { // 已售的订单才更新库存数量 err = gdb.Table("erp_stock").Where("store_id = ? and erp_commodity_id = ?", erpOrder.StoreId, commodities[i].ErpCommodityId). - Updates(map[string]interface{}{"count": gorm.Expr("count - ?", 1)}).Error // 库存数量-1 + Updates(map[string]interface{}{ + "count": gorm.Expr("count - ?", 1), + "updated_at": time.Now(), + }).Error // 库存数量-1 if err != nil { logger.Error("commodities err:", logger.Field("err", err)) return err @@ -1027,7 +1054,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { } err = gdb.Table("erp_stock_commodity").Where("imei = ?", commodities[i].IMEI). - Updates(map[string]interface{}{"state": InStock}).Error // 状态更新为在库 + Updates(map[string]interface{}{ + "state": InStock, + "updated_at": Now(), + }).Error // 状态更新为在库 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -1035,7 +1065,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { err = gdb.Table("erp_stock").Where("store_id = ? and erp_commodity_id = ?", erpOrder.StoreId, commodities[i].ErpCommodityId). - Updates(map[string]interface{}{"count": gorm.Expr("count + ?", 1)}).Error // 库存数量+1 + Updates(map[string]interface{}{ + "count": gorm.Expr("count + ?", 1), + "updated_at": time.Now(), + }).Error // 库存数量+1 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -1047,7 +1080,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { stockCommodityID, _ := tools.StringToInt(commodities[i].ErpStockCommodityID) if stockCommodityID > 0 { err = gdb.Table("erp_stock_commodity").Where("id = ?", commodities[i].ErpStockCommodityID). - Updates(map[string]interface{}{"state": InStock}).Error // 状态更新为在库 + Updates(map[string]interface{}{ + "state": InStock, + "updated_at": Now(), + }).Error // 状态更新为在库 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -1055,7 +1091,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { err = gdb.Table("erp_stock").Where("store_id = ? and erp_commodity_id = ?", erpOrder.StoreId, commodities[i].ErpCommodityId). - Updates(map[string]interface{}{"count": gorm.Expr("count + ?", 1)}).Error // 库存数量+1 + Updates(map[string]interface{}{ + "count": gorm.Expr("count + ?", 1), + "updated_at": time.Now(), + }).Error // 库存数量+1 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -1083,7 +1122,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { } err = gdb.Table("erp_stock_commodity").Where("id = ?", rightId). - Updates(map[string]interface{}{"state": InStock}).Error // 状态更新为在库 + Updates(map[string]interface{}{ + "state": InStock, + "updated_at": Now(), + }).Error // 状态更新为在库 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err @@ -1091,7 +1133,10 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { err = gdb.Table("erp_stock").Where("store_id = ? and erp_commodity_id = ?", erpOrder.StoreId, commodities[i].ErpCommodityId). - Updates(map[string]interface{}{"count": gorm.Expr("count + ?", 1)}).Error // 库存数量+1 + Updates(map[string]interface{}{ + "count": gorm.Expr("count + ?", 1), + "updated_at": time.Now(), + }).Error // 库存数量+1 if err != nil { logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err)) return err diff --git a/app/admin/models/game_card.go b/app/admin/models/game_card.go index b6f5ce3..18da811 100644 --- a/app/admin/models/game_card.go +++ b/app/admin/models/game_card.go @@ -1557,7 +1557,7 @@ func ExpireMemberSMSSendDay(day uint32, nowTime time.Time) { //err := orm.Eloquent.Table("user").Where("member_expire > ?", start).Where("member_expire < ?", end). // Where("member_level in (?)", []uint32{2, 3, 4, 5}).Find(&users).Error err := orm.Eloquent.Table("user").Where("member_expire > ?", start).Where("member_expire < ?", end). - Where("member_level = ?", MemberLevelUser).Find(&users).Error + Where("member_level = ?", MemberLevelUser).Find(&users).Error if err != nil { logger.Error(err.Error()) return diff --git a/app/admin/models/sms_summary.go b/app/admin/models/sms_summary.go index 0b73e39..4ee22e8 100644 --- a/app/admin/models/sms_summary.go +++ b/app/admin/models/sms_summary.go @@ -1,7 +1,7 @@ package models import ( - "database/sql" + "fmt" orm "go-admin/common/global" "gorm.io/gorm" "time" @@ -23,13 +23,16 @@ func GetSmsNumberRemaining() int { now := time.Now() year, month, _ := now.Date() - var totalUsed sql.NullInt64 + nTotalUsed := struct { + TotalUsed int `json:"total_used"` + }{} // 查询当前年份和月份的短信发送总数 if err := orm.Eloquent.Debug().Model(&SmsSummary{}). Where("year = ? AND month = ?", year, int(month)). - Select("SUM(used)"). - Scan(&totalUsed).Error; err != nil { + Select("SUM(used) as total_used"). + Scan(&nTotalUsed).Error; err != nil { + fmt.Println("SQL Error:", err) // 打印 SQL 错误信息 return 0 } @@ -39,7 +42,7 @@ func GetSmsNumberRemaining() int { nMonthlyLimit = monthlyLimit } - remaining := nMonthlyLimit - int(totalUsed.Int64) + remaining := nMonthlyLimit - nTotalUsed.TotalUsed return remaining } diff --git a/test/stock_test.go b/test/stock_test.go index 68015ef..35afc44 100644 --- a/test/stock_test.go +++ b/test/stock_test.go @@ -535,8 +535,10 @@ func TestMemberExpirationReminder(t *testing.T) { func TestExpireMemberSMSSendDay(t *testing.T) { InitIODBTest() orm.Eloquent = IODBTest - nowTime := time.Now() - models.ExpireMemberSMSSendDay(1, nowTime) + models.ExpireMemberSMSSend() + + //nowTime := time.Now() + //models.ExpireMemberSMSSendDay(1, nowTime) } func TestCreateInviteMemberReport(t *testing.T) {