123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package aftersale
- import (
- "errors"
- "zhiyuan/models"
- "zhiyuan/pkg/app"
- "zhiyuan/pkg/db"
- "zhiyuan/pkg/redis"
- "zhiyuan/pkg/utils"
- "zhiyuan/services/form"
- )
- var ASIssue models.ASIssue
- const cacheIssueKey = "aftersale_issue_cache"
- func GetIssueList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.ASIssue, error) {
- if page.PageNum > 0 && page.PageSize > 0 {
- where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
- }
- return ASIssue.GetMulti(where, fields, retVal)
- }
- func GetIssueListByCache() ([]*models.ASIssue, error) {
- res, err := redis.Get(cacheIssueKey)
- var typeList []*models.ASIssue
- if err != nil {
- typeList, err = GetIssueList(nil, nil, app.Page{}, nil)
- if err != nil {
- return nil, err
- }
- redis.Set(cacheIssueKey, typeList, 3600)
- } else {
- utils.JsonDecode(res).To(&typeList)
- }
- return typeList, nil
- }
- func GetIssueMapByCache() map[int]string {
- orderTypeMap := make(map[int]string)
- if orderTypeList, err := GetIssueListByCache(); err == nil {
- for _, v := range orderTypeList {
- orderTypeMap[v.ID] = v.IssueName
- }
- }
- return orderTypeMap
- }
- func CountIssue(where map[string]interface{}) (int64, error) {
- return db.Count(ASIssue.TableName(), where)
- }
- func GetIssueOne(where map[string]interface{}, fields []string, dest interface{}) (*models.ASIssue, error) {
- return ASIssue.GetOne(where, fields, dest)
- }
- func AddIssue(form form.ASIssueAdd) (int64, error) {
- if CheckIssueDuplicate(form.IssueName) {
- return 0, errors.New("问题已存在")
- }
- issueMap := map[string]interface{}{
- "issue_name": form.IssueName,
- }
- issueID, err := db.InsertOne(ASIssue.TableName(), issueMap)
- redis.Del(cacheKey)
- if err != nil {
- return 0, nil
- }
- return issueID, nil
- }
- func EditIssue(form form.ASIssueAdd, id int) (int64, error) {
- typeInfo, _ := GetIssueOne(map[string]interface{}{"id": id}, nil, nil)
- if typeInfo.IssueName != form.IssueName && CheckDuplicate(form.IssueName) {
- return 0, errors.New("类别已存在")
- }
- issueMap := map[string]interface{}{
- "issue_name": form.IssueName,
- }
- redis.Del(cacheKey)
- return db.Update(ASIssue.TableName(), map[string]interface{}{"id": id}, issueMap)
- }
- func CheckIssueDuplicate(name string) bool {
- issueInfo, err := GetIssueOne(map[string]interface{}{"issue_name": name}, nil, nil)
- return issueInfo != nil && err == nil
- }
|