package dao import ( "database/sql" "fmt" "speech-nlu-parse/model" "strconv" "time" ) // 保存闹钟、提醒数据 func insertAlarmRemind(alarmInfo model.AlarmRemindInfo, con *sql.DB) error { errd := deleteOverDue(alarmInfo.Mac, con) if errd != nil { return errd } err, isExist := checkAlarmExist(alarmInfo, con) if err != nil { fmt.Println(err.Error() + "InsertAlarmRemind") return err } else { if !isExist { insertSql := "INSERT INTO " + arDB + "(mac,e_date,e_time,note,type,repeaet_type,status, " + "countdown_duration, create_time, oid, url, content, speech_type) VALUES('" + alarmInfo.Mac + "'," + "'" + alarmInfo.E_date + "','" + alarmInfo.E_time + "','" + alarmInfo.Note + "'," + "'" + alarmInfo.E_type + "','" + strconv.Itoa(alarmInfo.Repeat_type) + "'," + "'" + strconv.Itoa(alarmInfo.Status) + "','" + strconv.Itoa(alarmInfo.Countdown_duration) + "'," + "'" + alarmInfo.Createtime + "','" + alarmInfo.Oid + "','" + alarmInfo.URL + "'," + "'" + alarmInfo.Content + "'," + "'" + alarmInfo.Speech_Type + "')" _, err := con.Exec(insertSql) if err != nil { fmt.Println(err.Error() + insertSql) } return err } else { if alarmInfo.E_type == remind { updateSql := "UPDATE " + arDB + " SET note='" + alarmInfo.Note + "', " + "content='" + alarmInfo.Content + "' WHERE mac='" + alarmInfo. Mac + "' AND e_date='" + alarmInfo.E_date + "' AND e_time='" + alarmInfo.E_time + "' AND repeaet_type='" + strconv.Itoa(alarmInfo.Repeat_type) + "' AND type='" + alarmInfo.E_type + "'" _, err := con.Exec(updateSql) if err != nil { fmt.Println("update remind failed") return err } } fmt.Println(time.Now().String()[:19], alarmInfo.Oid, " exists") } } return nil } // 删除过期闹钟 func deleteOverDue(mac string, con *sql.DB) error { //select * from alarm_remind where repeaet_type = '1' AND (e_date <= date(now()) or (e_date <= date(now()) AND e_time <= time(now()))) // deleteSql := "delete from " + arDB + " where mac='" + mac + "' AND repeaet_type = '1' AND (e_date < date(now()) or (e_date <= date(now()) AND e_time < time(now())))" _, err := con.Exec(deleteSql) if err != nil { fmt.Println(err.Error()) return err } return nil } // 检查是否以及存在 func checkAlarmExist(alarmInfo model.AlarmRemindInfo, con *sql.DB) (error, bool) { selectSql := "SELECT 1 FROM " + arDB + " where mac='" + alarmInfo.Mac + "' AND e_date= '" + alarmInfo.E_date + "' AND e_time='" + alarmInfo.E_time + "' AND type='" + alarmInfo.E_type + "' AND repeaet_type='" + strconv.Itoa(alarmInfo.Repeat_type) + "' limit 1" var rows *sql.Rows rows, err := con.Query(selectSql) if err != nil { fmt.Println(err.Error() + "->CheckAlarmExist") } defer rows.Close() isExist := false for rows.Next() { isExist = true } return err, isExist } func deleteAlarm(alarmInfo model.AlarmRemindInfo, con *sql.DB) error { errd := deleteOverDue(alarmInfo.Mac, con) if errd != nil { return errd } deleteSql := "DELETE FROM " + arDB + " WHERE mac='" + alarmInfo.Mac + "' AND oid= '" + alarmInfo.Oid + "'" fmt.Println(deleteSql) re, err := con.Exec(deleteSql) if err != nil { fmt.Println(err.Error() + " " + deleteSql) return err } affectRows, err := re.RowsAffected() if err != nil { fmt.Println(err.Error()) return err } fmt.Printf("affected rows:%v", affectRows) return nil } func deleteAllAlarm(mac string, con *sql.DB) error { deleteSql := "DELETE FROM " + arDB + " WHERE mac='" + mac + "'" // fmt.Println(deleteSql) re, err := con.Exec(deleteSql) if err != nil { fmt.Println(err.Error() + " " + deleteSql) return err } affectRows, err := re.RowsAffected() if err != nil { fmt.Println(err.Error()) return err } fmt.Printf("deleteAllAlarm affected rows:%v\n", affectRows) return nil } // 保存闹钟提醒 func SaveAlarmRemindData(alarmData model.AlarmRemindInfo) { err := insertAlarmRemind(alarmData, conn) if err != nil { fmt.Println(err.Error()) // utils.LogErrorToFile(*config.LogfileError, "database error(InsertAlarmRemind):"+err.Error()) } } // 取消闹钟 func DeleteAlarmRemindData(alarmData model.AlarmRemindInfo) { err := deleteAlarm(alarmData, conn) if err != nil { fmt.Println(err.Error()) // utils.LogErrorToFile(*config.LogfileError, "database error(deleteAlarmRemindData):"+err.Error()) } } // 删除过期闹钟 func DeleteOverdueAlarmRemindData(mac string) { err := deleteOverDue(mac, conn) if err != nil { fmt.Println(err.Error()) // utils.LogErrorToFile(*config.LogfileError, "database error(deleteOverdueAlarmRemindData):"+err.Error()) } } // 删除所有闹钟 func DeleteAllAlarmRemindData(mac string) { err := deleteAllAlarm(mac, conn) if err != nil { fmt.Println(err.Error()) // utils.LogErrorToFile(*config.LogfileError, "database error(deleteOverdueAlarmRemindData):"+err.Error()) } }