diff --git a/business/jxstore/misc/Store_Alert_Inform.go b/business/jxstore/misc/Store_Alert_Inform.go index 4a7cb1e96..950e7ab54 100644 --- a/business/jxstore/misc/Store_Alert_Inform.go +++ b/business/jxstore/misc/Store_Alert_Inform.go @@ -6,10 +6,10 @@ import ( "reflect" "time" - "git.rosy.net.cn/jx-callback/business/jxutils" - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg" "git.rosy.net.cn/jx-callback/business/model" @@ -32,6 +32,10 @@ const ( AlertTypeStandardFinishTimeOrderSelfDelivery = 3 AlertTypeStandardPickUpTimeOrderDaDa = 4 + ColorRed = "red" + ColorYellow = "yellow" + ColorUnknown = "Unknown" + OneDayName = "单日" OneWeekDayName = "七日" OneMonthDayName = "三十日" @@ -206,6 +210,35 @@ func SendAlertInfo(storeID int, storeName, alertInfo string) { } } +func GetFieldNameByAlertType(alertType, dayNum int) (fieldName string) { + switch alertType { + case AlertTypePickTimeOrderDaDa: + if dayNum == CheckStoreAlertOneDayNum { + fieldName = model.FieldPickTimeDaDa + } else if dayNum == CheckStoreAlertOneWeekDayNum { + fieldName = model.FieldPickTimeDaDaOneWeek + } + case AlertTypeBadCommentOrder: + if dayNum == CheckStoreAlertOneDayNum { + fieldName = model.FieldBadComment + } else if dayNum == CheckStoreAlertOneWeekDayNum { + fieldName = model.FieldBadCommentOneWeek + } + case AlertTypeAbsentGoodsOrder: + if dayNum == CheckStoreAlertOneDayNum { + fieldName = model.FieldAbsentGoods + } else if dayNum == CheckStoreAlertOneWeekDayNum { + fieldName = model.FieldAbsentGoodsOneWeek + } + case AlertTypeStandardFinishTimeOrderSelfDelivery: + fieldName = model.FieldStandardFinishTimeSelfDelivery + case AlertTypeStandardPickUpTimeOrderDaDa: + fieldName = model.FieldStandardPickUpTimeDaDa + } + + return fieldName +} + func SendAlertInfoWrapper(storeID int, storeName string, dayNum, alertType, count, totalCount int) { if totalCount > 0 { ratio := int(math.Round(float64(count) * 100 / float64(totalCount))) @@ -216,7 +249,8 @@ func SendAlertInfoWrapper(storeID int, storeName string, dayNum, alertType, coun if isAlert { alertInfo := GetAlertInfo(dayNum, isRedAlert, storeName, alertType, logicCondtion, outRatio) SendAlertInfo(storeID, storeName, alertInfo) - storeAlertDataWrapper.SetData(storeID, model.FieldRiskOrderCount, ratio) + fieldName := GetFieldNameByAlertType(alertType, dayNum) + storeAlertDataWrapper.SetData(storeID, fieldName, ratio) } } } @@ -359,9 +393,22 @@ func ScheduleCheckStoreAlert() { } } -func GetStoreAlertList(storeIDList []int, cityCode int, keyWord string, beginTime, endTime time.Time, offset, pageSize int) (storeAlertData model.StoreAlertData, err error) { +func GetValueColor(alertType, dayNum, ratio, count int) (color string) { + yellowAlert, redAlert, _, _ := CheckAlert(alertType, dayNum, ratio, count) + if yellowAlert { + color = ColorYellow + } else if redAlert { + color = ColorRed + } else { + color = ColorUnknown + } + + return color +} + +func GetStoreAlertList(storeIDList []int, cityCode int, keyWord string, dateTime time.Time, offset, pageSize int) (storeAlertData model.StoreAlertData, err error) { db := dao.GetDB() - storeAlertList, err := dao.GetStoreAlertList(db, storeIDList, cityCode, keyWord, beginTime, endTime) + storeAlertList, err := dao.GetStoreAlertList(db, storeIDList, cityCode, keyWord, dateTime) if err == nil && len(storeAlertList) > 0 { offset = jxutils.FormalizePageOffset(offset) pageSize = jxutils.FormalizePageSize(pageSize) @@ -370,8 +417,62 @@ func GetStoreAlertList(storeIDList []int, cityCode int, keyWord string, beginTim pagedStoreAlertList = append(pagedStoreAlertList, storeAlertList[i]) } + var storeAlertAdvancedList []*model.StoreAlertAdvanced + for _, value := range pagedStoreAlertList { + storeAlertAdvanced := &model.StoreAlertAdvanced{} + storeAlertAdvanced.ID = value.ID + storeAlertAdvanced.CreatedTime = value.CreatedTime + storeAlertAdvanced.AlertDate = value.AlertDate + storeAlertAdvanced.StoreID = value.StoreID + storeAlertAdvanced.StoreName = value.StoreName + storeAlertAdvanced.CityName = value.CityName + + storeAlertAdvanced.PickTimeDaDa.Value = fmt.Sprintf("%d%%", value.PickTimeDaDa) + storeAlertAdvanced.PickTimeDaDa.Color = GetValueColor(AlertTypePickTimeOrderDaDa, CheckStoreAlertOneDayNum, value.PickTimeDaDa, -1) + + storeAlertAdvanced.BadComment.Value = fmt.Sprintf("%d%%", value.BadComment) + storeAlertAdvanced.BadComment.Color = GetValueColor(AlertTypeBadCommentOrder, CheckStoreAlertOneDayNum, value.BadComment, -1) + + storeAlertAdvanced.AbsentGoods.Value = fmt.Sprintf("%d%%", value.AbsentGoods) + storeAlertAdvanced.AbsentGoods.Color = GetValueColor(AlertTypeAbsentGoodsOrder, CheckStoreAlertOneDayNum, value.AbsentGoods, -1) + + storeAlertAdvanced.PickTimeDaDaOneWeek.Value = fmt.Sprintf("%d%%", value.PickTimeDaDaOneWeek) + storeAlertAdvanced.PickTimeDaDaOneWeek.Color = GetValueColor(AlertTypePickTimeOrderDaDa, CheckStoreAlertOneWeekDayNum, value.PickTimeDaDaOneWeek, -1) + + storeAlertAdvanced.BadCommentOneWeek.Value = fmt.Sprintf("%d%%", value.BadCommentOneWeek) + storeAlertAdvanced.BadCommentOneWeek.Color = GetValueColor(AlertTypeBadCommentOrder, CheckStoreAlertOneWeekDayNum, value.BadCommentOneWeek, -1) + + storeAlertAdvanced.AbsentGoodsOneWeek.Value = fmt.Sprintf("%d%%", value.AbsentGoodsOneWeek) + storeAlertAdvanced.AbsentGoodsOneWeek.Color = GetValueColor(AlertTypeAbsentGoodsOrder, CheckStoreAlertOneWeekDayNum, value.AbsentGoodsOneWeek, -1) + + storeAlertAdvanced.StandardFinishTimeSelfDelivery.Value = fmt.Sprintf("%d%%", value.StandardFinishTimeSelfDelivery) + storeAlertAdvanced.StandardFinishTimeSelfDelivery.Color = GetValueColor(AlertTypeStandardFinishTimeOrderSelfDelivery, CheckStoreAlertOneWeekDayNum, value.StandardFinishTimeSelfDelivery, -1) + + storeAlertAdvanced.StandardPickUpTimeDaDa.Value = fmt.Sprintf("%d%%", value.StandardPickUpTimeDaDa) + storeAlertAdvanced.StandardPickUpTimeDaDa.Color = GetValueColor(AlertTypeStandardPickUpTimeOrderDaDa, CheckStoreAlertOneWeekDayNum, value.StandardPickUpTimeDaDa, -1) + + storeAlertAdvanced.StandardPickUpTimeDaDa.Value = fmt.Sprintf("%d%%", value.StandardPickUpTimeDaDa) + storeAlertAdvanced.StandardPickUpTimeDaDa.Color = GetValueColor(AlertTypeStandardPickUpTimeOrderDaDa, CheckStoreAlertOneWeekDayNum, value.StandardPickUpTimeDaDa, -1) + + if value.NoOrderInMonth == 1 { + storeAlertAdvanced.NoOrderInMonth.Value = "是" + storeAlertAdvanced.NoOrderInMonth.Color = ColorRed + } else { + storeAlertAdvanced.NoOrderInMonth.Value = "否" + storeAlertAdvanced.NoOrderInMonth.Color = ColorUnknown + } + + storeAlertAdvanced.RiskOrderCount.Value = utils.Int2Str(value.RiskOrderCount) + if value.RiskOrderCount > 0 { + storeAlertAdvanced.RiskOrderCount.Color = ColorRed + } else { + storeAlertAdvanced.RiskOrderCount.Color = ColorUnknown + } + + storeAlertAdvancedList = append(storeAlertAdvancedList, storeAlertAdvanced) + } storeAlertData.TotalCount = len(storeAlertList) - storeAlertData.StoreAlertList = pagedStoreAlertList + storeAlertData.StoreAlertList = storeAlertAdvancedList } return storeAlertData, err diff --git a/business/model/Store_Alert_Inform.go b/business/model/Store_Alert_Inform.go index ccd4cafd4..7af87259a 100644 --- a/business/model/Store_Alert_Inform.go +++ b/business/model/Store_Alert_Inform.go @@ -36,7 +36,8 @@ type StoreAlert struct { type StoreAlertEx struct { StoreAlert - StoreName string `json:"storeName"` + StoreName string `orm:"column(store_name)" json:"storeName"` + CityName string `orm:"column(city_name)" json:"cityName"` } type StoreAlertProperty struct { @@ -49,6 +50,8 @@ type StoreAlertAdvanced struct { CreatedTime time.Time `json:"createdTime"` AlertDate time.Time `json:"alertDate"` StoreID int `json:"storeID"` + StoreName string `json:"storeName"` + CityName string `json:"cityName"` PickTimeDaDa StoreAlertProperty BadComment StoreAlertProperty @@ -64,8 +67,8 @@ type StoreAlertAdvanced struct { } type StoreAlertData struct { - StoreAlertList []*StoreAlertEx `json:"storeAlertList"` - TotalCount int `json:"totalCount"` + StoreAlertList []*StoreAlertAdvanced `json:"storeAlertList"` + TotalCount int `json:"totalCount"` } type StoreOrderTime struct { diff --git a/business/model/dao/Store_Alert_Inform.go b/business/model/dao/Store_Alert_Inform.go index 0dd3f5526..cd7bcbf8e 100644 --- a/business/model/dao/Store_Alert_Inform.go +++ b/business/model/dao/Store_Alert_Inform.go @@ -12,17 +12,16 @@ func InsertStoreAlert(storeAlert *model.StoreAlert) error { return CreateEntity(nil, storeAlert) } -func GetStoreAlertList(db *DaoDB, storeIDList []int, cityCode int, keyWord string, beginTime, endTime time.Time) (storeAlertList []*model.StoreAlertEx, err error) { +func GetStoreAlertList(db *DaoDB, storeIDList []int, cityCode int, keyWord string, dateTime time.Time) (storeAlertList []*model.StoreAlertEx, err error) { sql := ` - SELECT t1.* + SELECT t1.*, t2.name store_name, t3.name city_name FROM store_alert t1 JOIN store t2 ON t1.store_id = t2.id JOIN place t3 ON t2.city_code = t3.code - WHERE DATE(t1.alert_date) >= DATE(?) AND DATE(t1.alert_date) <= DATE(?) + WHERE DATE(t1.alert_date) = DATE(?) ` sqlParams := []interface{}{ - beginTime, - endTime, + dateTime, } if len(storeIDList) > 0 { sql += ` diff --git a/controllers/cms_store.go b/controllers/cms_store.go index af62ada0d..a2213ca1e 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -492,8 +492,7 @@ func (c *StoreController) GetStoreTotalScoreList() { // @Param storeIDs formData string false "京西门店ID列表" // @Param cityCode formData int false "城市编码" // @Param keyword formData string false "关键字" -// @Param beginTime formData string true "开始日期" -// @Param endTime formData string true "结束日期" +// @Param dateTime formData string true "统计日期" // @Param offset formData int false "列表起始序号(以0开始,缺省为0)" // @Param pageSize formData int false "列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult @@ -501,11 +500,11 @@ func (c *StoreController) GetStoreTotalScoreList() { // @router /GetStoreAlertList [post] func (c *StoreController) GetStoreAlertList() { c.callGetStoreAlertList(func(params *tStoreGetStoreAlertListParams) (retVal interface{}, errCode string, err error) { - timeList, err := jxutils.BatchStr2Time(params.BeginTime, params.EndTime) + timeList, err := jxutils.BatchStr2Time(params.DateTime) if err == nil { var storeIDList []int if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil { - retVal, err = misc.GetStoreAlertList(storeIDList, params.CityCode, params.Keyword, timeList[0], timeList[1], params.Offset, params.PageSize) + retVal, err = misc.GetStoreAlertList(storeIDList, params.CityCode, params.Keyword, timeList[0], params.Offset, params.PageSize) } } return retVal, "", err