123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- package service
- import (
- "errors"
- "fmt"
- "time"
- "gopkg.in/guregu/null.v3"
- "xiaoniaokuaiyan.com/xiaoniao/entity"
- "xiaoniaokuaiyan.com/xiaoniao/util"
- )
- type SystemService struct{}
- func (srv *SystemService) GetFirstPagePicList() (interface{}, error) {
- db := util.GetSqlDB()
- strSql := "select title, value from t_dictionaries where class = ? and flag = 'Y';"
- var rList = []struct {
- Title string `db:"title" json:"title"`
- Value string `db:"value", json:"value"`
- }{}
- err := db.Select(&rList, strSql, "indexpic")
- return rList, err
- }
- func (srv *SystemService) GetWorkdays(n int) (interface{}, error) {
- if n <= 0 {
- n = 7
- }
- today := time.Now().Format("2006-01-02")
- strSql := "select curr_date from t_workdays where isworkday = 'Y' and curr_date > ? order by curr_date asc limit ?;"
- workDays := []string{}
- db := util.GetWriteSqlDB()
- err := db.Select(&workDays, strSql, today, n)
- return workDays, err
- }
- func (srv *SystemService) GetQuestion(qid int) (interface{}, error) {
- if qid == 0 {
- qid = 5
- }
- db := util.GetSqlDB()
- strSql := "select title from t_activity_title where id = ?;"
- var qTitle string
- err := db.Get(&qTitle, strSql, qid)
- if err != nil {
- return nil, err
- }
- var qlist = []struct {
- Id int `json:"id" db:"id"`
- AtId int `json:"at_id" db:"at_iq"`
- Title string `json:"title" db:"title"`
- Type string `json:"type" db:"type"`
- IsShow string `json:"is_show" db:"is_show"`
- IsMust string `json:"is_must" db:"is_must"`
- VerifyRule string `json:"verify_rule" db:"verify_rule"`
- LogicAllAqId string `json:"logic_all_aq_id" db:"logic_all_aq_id"`
- DefaultValue string `json:"default_value" db:"default_value"`
- Order string `json:"order" db:"order"`
- OptionList []interface{} `json:"option_list" db:"-"`
- }{}
- strSql = "select * from t_activity_question where at_iq = ? order by `order`;"
- err = db.Select(&qlist, strSql, qid)
- if err != nil {
- return nil, err
- }
- if len(qlist) == 0 {
- return nil, errors.New("数据错误")
- }
- var (
- strAqIds string
- qlistIdxMap = map[int]int{}
- )
- for idx, qitem := range qlist {
- strAqIds += fmt.Sprintf("%d,", qitem.Id)
- qlistIdxMap[qitem.Id] = idx
- }
- strAqIds = strAqIds[0 : len(strAqIds)-1]
- strSql = "select * from t_activity_option where aq_id in(" + strAqIds + ") order by aq_id,`order`;"
- var optionList = []struct {
- Id int `json:"id" db:"id"`
- AqId int `json:"aq_id" db:"aq_id"`
- Name string `json:"name" db:"name"`
- LogicAqId null.String `json:"logic_aq_id" db:"logic_aq_id"`
- Order string `json:"order" db:"order"`
- DetectProducts []interface{} `json:"detect_products" db:"-"`
- }{}
- err = db.Select(&optionList, strSql)
- if err != nil {
- return nil, err
- }
- if len(optionList) == 0 {
- return nil, errors.New("数据错误1")
- }
- var (
- strOpids string
- olistIdxMap = map[int]int{}
- )
- for idx, oitem := range optionList {
- strOpids += fmt.Sprintf("%d,", oitem.Id)
- olistIdxMap[oitem.Id] = idx
- }
- strOpids = strOpids[0 : len(strOpids)-1]
- strSql = "select t1.*, t2.price from t_activity_detect t1 left join t_detect_product t2 on t1.detect_product_id=t2.id where ap_id in(" + strOpids + ") or ap_id is NULL order by ap_id;"
- var dpList = []struct {
- Id int `json:"id" db:"id"`
- ApId null.Int `json:"ap_id" db:"ap_id"`
- DetectProductId int `json:"detect_product_id" db:"detect_product_id"`
- DetectProductName string `json:"detect_product_name" db:"detect_product_name"`
- Price int `json:"price" db:"price"`
- IsBase string `json:"is_base" db:"is_base"`
- }{}
- err = db.Select(&dpList, strSql)
- if err != nil {
- return nil, err
- }
- if len(dpList) == 0 {
- return nil, errors.New("数据错误3")
- }
- var result = struct {
- BaseDetectProducts []interface{} `json:"base_detect_products"`
- Title string `json:"title"`
- QuestionList interface{} `json:"question_list"`
- }{
- Title: qTitle,
- }
- for _, dpItem := range dpList {
- if idx, ok := olistIdxMap[int(dpItem.ApId.Int64)]; ok {
- optionList[idx].DetectProducts = append(optionList[idx].DetectProducts, dpItem)
- } else {
- result.BaseDetectProducts = append(result.BaseDetectProducts, dpItem)
- }
- }
- for _, oitem := range optionList {
- if idx, ok := qlistIdxMap[oitem.AqId]; ok {
- qlist[idx].OptionList = append(qlist[idx].OptionList, oitem)
- }
- }
- result.QuestionList = qlist
- return result, nil
- }
- func (srv *SystemService) GetDictList(className, ordernum string) (interface{}, error) {
- var dictList = []entity.DictItem{}
- db := util.GetSqlDB()
- if len(ordernum) == 0 {
- strSql := "select * from t_dictionaries where class = ? and flag = 'Y';"
- err := db.Select(&dictList, strSql, className)
- return dictList, err
- } else {
- strSql := "select * from t_dictionaries where class = ? and ordernum = ? and flag='Y';"
- err := db.Select(&dictList, strSql, className, ordernum)
- return dictList, err
- }
- }
|