diff --git a/business/bidding/bidding.go b/business/bidding/bidding.go index 1d92812f8..5530802b9 100644 --- a/business/bidding/bidding.go +++ b/business/bidding/bidding.go @@ -9,9 +9,10 @@ import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "strings" + "time" ) -// 获取招标信息 +// GetBiddingMsg 获取招标信息 func GetBiddingMsg(ctx *jxcontext.Context, param map[string]interface{}) (result []*model.BiddingInfo, err error) { sql := `select * from cg a where 1=1` @@ -129,3 +130,67 @@ func UpdateTiktokOrderPhoneAddress() error { } return nil } + +// CreateSupermarketSign 保存超市签约数据 +func CreateSupermarketSign(supermarket []*model.SupermarketSign, lastOperator string) []string { + db := dao.GetDB() + errors := make([]string, 0, 0) + for i := 0; i < len(supermarket); i++ { + dao.WrapAddIDCULDEntity(supermarket[i], lastOperator) + if err := dao.CreateEntity(db, supermarket[i]); err != nil { + errors = append(errors, fmt.Sprintf("%s-%s:%v", supermarket[i].StoreName, supermarket[i].StoreID, err)) + } + } + + return errors +} + +func QuerySupermarketSign(storeId, storeName, cityName, storeType, signPeople string, start, end, page, size int) (result []*model.SupermarketSign, totalCount int, err error) { + sql := `SELECT SQL_CALC_FOUND_ROWS * FROM supermarket_sign WHERE 1 = 1 ` + param := make([]interface{}, 0, 0) + + if start != 0 { + startTime := time.Unix(int64(start), 0) + sql += ` AND sign_start_time >= ?` + param = append(param, startTime) + } + if end != 0 { + endTime := time.Unix(int64(end), 0) + sql += ` AND sign_end_time < ?` + param = append(param, endTime) + } + if storeId != "" { + sql += ` AND store_id = ?` + param = append(param, storeId) + } + if storeName != "" { + sql += ` AND store_name like ?` + param = append(param, "%"+storeName+"%") + } + if cityName != "" { + sql += ` AND code_name like ?` + param = append(param, "%"+cityName+"%") + } + if storeType != "" { + sql += ` AND store_type = ?` + param = append(param, storeType) + } + if signPeople != "" { + sql += ` AND sign_people = ?` + param = append(param, signPeople) + } + + sql += " limit ? offset ? " + param = append(param, size) + param = append(param, (utils.MustInterface2Int64(page)-1)*utils.MustInterface2Int64(size)) + + db := dao.GetDB() + txDB, _ := dao.Begin(db) + defer dao.Commit(db, txDB) + if err = dao.GetRowsTx(txDB, &result, sql, param...); err == nil { + totalCount = dao.GetLastTotalRowCount2(db, txDB) + return result, totalCount, nil + } + + return nil, 0, err +} diff --git a/business/jxcallback/orderman/order_comment.go b/business/jxcallback/orderman/order_comment.go index 26d1c1909..81885af4f 100644 --- a/business/jxcallback/orderman/order_comment.go +++ b/business/jxcallback/orderman/order_comment.go @@ -171,6 +171,9 @@ func (c *OrderManager) OnOrderComments(orderCommentList []*model.OrderComment) ( } if err == nil { + if comment2.OrderFlag == "1" { + globals.SugarLogger.Debugf("---------------comment2-isNewComment :%s", utils.Format4Output(comment2, false)) + } if isNewComment { err = dao.CreateEntity(db, comment2) } else if comment2 != nil { @@ -178,12 +181,18 @@ func (c *OrderManager) OnOrderComments(orderCommentList []*model.OrderComment) ( } } } else { + if comment2.OrderFlag == "1" { + globals.SugarLogger.Debugf("---------------comment2-UpdateEntity :%s", utils.Format4Output(comment2, false)) + } if orderComment.VendorOrderID2 != "" { comment2.VendorOrderId = orderComment.VendorOrderID2 _, err = dao.UpdateEntity(db, comment2) } } } else { + if comment2.OrderFlag == "1" { + globals.SugarLogger.Debugf("---------------comment2-UpdateEntity2 :%s", utils.Format4Output(comment2, false)) + } comment2.VendorOrderId = orderComment.VendorOrderID2 _, err = dao.UpdateEntity(db, comment2, "VendorOrderId") } diff --git a/business/model/supermarket_sign.go b/business/model/supermarket_sign.go new file mode 100644 index 000000000..b6d2e15dc --- /dev/null +++ b/business/model/supermarket_sign.go @@ -0,0 +1,28 @@ +package model + +import "time" + +type SupermarketSign struct { + ModelIDCULD + StoreID string `orm:"column(store_id);size(32)" json:"storeID"` // 门店ID + StoreName string `orm:"column(store_name);size(128)" json:"storeName"` // 门店名称 + CodeName string `orm:"column(code_name);size(32)" json:"codeName"` // 门店所属城市 + StoreType string `orm:"column(store_type);size(16)" json:"storeType"` // 门店类型 + SalesVolume int64 `orm:"column(sales_volume);size(16)" json:"salesVolume"` // 销量 + Points float64 `orm:"column(points);size(4)" json:"points"` // 扣点 + ContractFee float64 `orm:"column(contract_fee);size(8)" json:"contractFee"` // 签约收费 + SignStartTime time.Time `orm:"column(sign_start_time);type(datetime)" json:"signStartTime"` // 签约开始时间 + SignEndTime time.Time `orm:"column(sign_end_time);type(datetime)" json:"signEndTime"` // 签约结束时间 + SignPeople string `orm:"column(sign_people);size(36)" json:"signPeople"` // 签约人 + Status string `orm:"column(status);size(36)" json:"status"` // 签约状态 + Remake string `orm:"column(remake);size(512)" json:"remake"` // 备注 + Reward string `orm:"column(reward);size(512)" json:"reward"` // 奖励信息 + CreateCrowd string `orm:"column(create_crowd);size(16)" json:"createCrowd"` // 群状态 +} + +func (*SupermarketSign) TableIndex() [][]string { + return [][]string{ + []string{"StoreID", "StoreName", "CodeName"}, + []string{"SignStartTime"}, + } +} diff --git a/business/partner/purchase/mtwm/order_comment.go b/business/partner/purchase/mtwm/order_comment.go index f389958ad..43194a1d9 100644 --- a/business/partner/purchase/mtwm/order_comment.go +++ b/business/partner/purchase/mtwm/order_comment.go @@ -60,6 +60,7 @@ func (c *PurchaseHandler) RefreshComment(fromTime, toTime time.Time) (err error) } // 查询门店差评 commentList, _ := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).CommentQuery(storeDetail.VendorStoreID, startDateStr, endDateStr, 0, 0, mtwmapi.CommentReplyStatusNotReplied) + globals.SugarLogger.Debugf("--------------commentList := %d", len(commentList)) var orderCommentList []*model.OrderComment if len(commentList) == model.NO || commentList == nil { return nil, nil @@ -130,6 +131,7 @@ func (c *PurchaseHandler) RefreshComment(fromTime, toTime time.Time) (err error) orderComment := result.(*model.OrderComment) orderCommentList = append(orderCommentList, orderComment) } + globals.SugarLogger.Debugf("--------------orderCommentList := %d", len(orderCommentList)) if len(orderCommentList) > 0 { err = partner.CurOrderManager.OnOrderComments(orderCommentList) } diff --git a/controllers/bidding.go b/controllers/bidding.go index acdd81a84..b9a821209 100644 --- a/controllers/bidding.go +++ b/controllers/bidding.go @@ -1,14 +1,20 @@ package controllers import ( + "encoding/json" "errors" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/bidding" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/excel" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego/server/web" + "strings" + "time" ) type BiddingController struct { @@ -125,3 +131,117 @@ func (c *BiddingController) JXPrintAfsOrder() { return nil, "", err }) } + +// CreateSupermarketSign 创建超市签约信息 +// @Title 创建超市签约信息 +// @Description 创建超市签约信息:记录已经签约的门店信息 +// @Param signObj formData string true "model.SupermarketSign" +// @Param token header string false "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /CreateSupermarketSign [post] +func (c *BiddingController) CreateSupermarketSign() { + c.callCreateSupermarketSign(func(params *tBindCreateSupermarketSignParams) (retVal interface{}, hint string, err error) { + supermarket := make([]*model.SupermarketSign, 0, 0) + if err = json.Unmarshal([]byte(params.SignObj), &supermarket); err != nil { + return nil, "", err + } + + //retVal = bidding.CreateSupermarketSign(supermarket, params.Ctx.GetUserID()) + retVal = bidding.CreateSupermarketSign(supermarket, "liulei") + return retVal, "", nil + }) +} + +// GetSupermarketSign 查询超市签约信息 +// @Title 查询超市签约信息 +// @Description 查询超市签约信息:记录已经签约的门店信息 +// @Param storeID formData string false "美团门店ID" +// @Param storeName formData string false "美团门店名称" +// @Param startTime formData int64 false "签约开始时间" +// @Param endTime formData int64 false "签约结束时间" +// @Param cityName formData string false "门店城市" +// @Param storeType formData string false "门店类型" +// @Param signPeople formData string false "签约人" +// @Param page formData int64 true "页码" +// @Param size formData int64 true "页数" +// @Param token header string false "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetSupermarketSign [post] +func (c *BiddingController) GetSupermarketSign() { + c.callGetSupermarketSign(func(params *tBindGetSupermarketSignParams) (retVal interface{}, hint string, err error) { + retVal, count, err := bidding.QuerySupermarketSign(params.StoreID, params.StoreName, params.CityName, params.StoreType, params.SignPeople, params.StartTime, params.EndTime, params.Page, params.Size) + + return map[string]interface{}{"data": retVal, "page": count}, "", err + }) +} + +// DownSupermarketSign 下载超市签约信息 +// @Title 下载超市签约信息 +// @Description 下载超市签约信息 +// @Param storeID formData string false "美团门店ID" +// @Param storeName formData string false "美团门店名称" +// @Param startTime formData int64 false "签约开始时间" +// @Param endTime formData int64 false "签约结束时间" +// @Param cityName formData string false "门店城市" +// @Param storeType formData string false "门店类型" +// @Param signPeople formData string false "签约人" +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /DownSupermarketSign [post] +func (c *BiddingController) DownSupermarketSign() { + c.callGetSupermarketSign(func(params *tBindGetSupermarketSignParams) (retVal interface{}, hint string, err error) { + var ( + stores []*model.SupermarketSign + excelBin []byte + ) + task := tasksch.NewSeqTask("导出签约门店", params.Ctx, + func(task *tasksch.SeqTask, step int, params2 ...interface{}) (result interface{}, err error) { + switch step { + case 0: + stores, _, _ = bidding.QuerySupermarketSign(params.StoreID, params.StoreName, params.CityName, params.StoreType, params.SignPeople, params.StartTime, params.EndTime, 1, model.UnlimitedPageSize) + case 1: + excelConf := &excel.Obj2ExcelSheetConfig{ + Title: "签约门店导出", + Data: stores, + CaptionList: []string{ + "createdAt", + "updatedAt", + "storeID", + "storeName", + "codeName", + "storeType", + "salesVolume", + "points", + "contractFee", + "signStartTime", + "signEndTime", + "signPeople", + "status", + "remake", + "reward", + "createCrowd", + }, + } + excelBin = excel.Obj2Excel([]*excel.Obj2ExcelSheetConfig{excelConf}) + case 2: + keyPart := []string{ + params.Ctx.GetUserName(), + } + keyPart = append(keyPart, time.Now().Format("20060102T150405")+".xlsx") + key := "export/" + strings.Join(keyPart, "_") + excelURL, err2 := jxutils.UploadExportContent(excelBin, key) + if err = err2; err == nil { + task.SetNoticeMsg(excelURL) + } + } + return nil, err + }, 2) + + tasksch.ManageTask(task).Run() + hint = task.GetID() + return "", hint, err + }) +} diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index 6bde56b1a..e5e3cfad4 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -10,20 +10,14 @@ import ( ) func Init() { - // set default database - // orm.RegisterDataBase(aliasName, driverName, dataSource, params) //正式服务器 orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") - // 本地测试服调试 - // orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) - //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - // 开启sql打印 //orm.Debug = true + orm.RegisterModel(&model.SupermarketSign{}) orm.RegisterModel(new(legacymodel.Config)) orm.RegisterModel(new(legacymodel.BlackClient)) orm.RegisterModel(new(legacymodel.JxBadComments)) @@ -31,10 +25,7 @@ func Init() { // if !globals.DisableWXAuth1 { // orm.RegisterModel(new(legacymodel.WeiXins)) // } - // 这个注册的2022年之前的表,包括2022年数据 orm.RegisterModel(new(model.GoodsOrder)) - // 这个注册的是当前年份下一年的表,实现分表。不包括当前年份。 - //orm.RegisterModelWithSuffix("_"+strconv.Itoa(time.Now().Year()+1), new(model.GoodsOrder)) orm.RegisterModel(new(model.GoodsOrderOriginal)) orm.RegisterModel(new(model.TempGoodsOrderMobile)) orm.RegisterModel(new(model.OrderSku)) diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 5c6f72fc6..edc50467a 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -4450,6 +4450,33 @@ func init() { MethodParams: param.Make(), Filters: nil, Params: nil}) + // 创建签约门店 + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:BiddingController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:BiddingController"], + web.ControllerComments{ + Method: "CreateSupermarketSign", + Router: `/CreateSupermarketSign`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + // 查询签约门店 + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:BiddingController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:BiddingController"], + web.ControllerComments{ + Method: "GetSupermarketSign", + Router: `/GetSupermarketSign`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + // 下载报表 + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:BiddingController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:BiddingController"], + web.ControllerComments{ + Method: "DownSupermarketSign", + Router: `/DownSupermarketSign`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) // 版本设置 web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:VersionController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:VersionController"],