package controllers import ( "fmt" "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/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego" ) type JobController struct { beego.Controller } // @Title 发布任务 // @Description 发布任务 // @Param token header string true "认证token" // @Param payload formData string true "job+step+img 类型" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /PublishJob [post] func (c *JobController) PublishJob() { c.callPublishJob(func(params *tJobPublishJobParams) (retVal interface{}, errCode string, err error) { var job *model.JobExt if err = utils.UnmarshalUseNumber([]byte(params.Payload), &job); err == nil { errCode, err = cms.PublishJob(params.Ctx, job) } return retVal, errCode, err }) } // @Title 修改任务 // @Description 修改任务 // @Param token header string true "认证token" // @Param payload formData string true "job+step+img 类型" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateJob [post] func (c *JobController) UpdateJob() { c.callUpdateJob(func(params *tJobUpdateJobParams) (retVal interface{}, errCode string, err error) { payload := make(map[string]interface{}) if err = jxutils.Strings2Objs(params.Payload, &payload); err == nil { err = cms.UpdateJob(params.Ctx, payload) } return retVal, "", err }) } // @Title 用户取消发布的任务 // @Description 用户取消发布的任务 // @Param token header string true "认证token" // @Param jobID formData int true "jobID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CancelPublishJob [post] func (c *JobController) CancelPublishJob() { c.callCancelPublishJob(func(params *tJobCancelPublishJobParams) (retVal interface{}, errCode string, err error) { err = cms.CancelPublishJob(params.Ctx, params.JobID) return retVal, "", err }) } // @Title 查看任务类型 // @Description 查看任务类型 // @Param token header string true "认证token" // @Param name query string false "分类名" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetJobCategories [get] func (c *JobController) GetJobCategories() { c.callGetJobCategories(func(params *tJobGetJobCategoriesParams) (retVal interface{}, errCode string, err error) { retVal, err = dao.GetJobCategories(dao.GetDB(), params.Name) return retVal, "", err }) } // @Title 查看任务列表 // @Description 查看任务列表 // @Param token header string false "认证token" // @Param userIDs query string false "用户IDs" // @Param categoryIDs query string false "分类IDs" // @Param statuss query string false "状态s" // @Param vendorIDs query string false "平台IDs" // @Param cityCodes query string false "CityIDs" // @Param includeStep query bool false "是否查询步骤,默认否" // @Param fromTime query string false "开始时间" // @Param toTime query string false "结束时间" // @Param lng query float64 false "经度" // @Param lat query float64 false "维度" // @Param span query int false "标签,1为置顶,2为推荐" // @Param keyword query string false "关键字" // @Param sortType query int false "排序类型, 1距离,2新店优先,3今日热门,4奖励高低" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetJobs [get] func (c *JobController) GetJobs() { c.callGetJobs(func(params *tJobGetJobsParams) (retVal interface{}, errCode string, err error) { var ( userIDs []string categoryIDs, statuss, vendorIDs, cityCodes []int ) if err = jxutils.Strings2Objs(params.UserIDs, &userIDs, params.CategoryIDs, &categoryIDs, params.Statuss, &statuss, params.VendorIDs, &vendorIDs, params.CityCodes, &cityCodes); err == nil { retVal, err = cms.GetJobs(params.Ctx, userIDs, categoryIDs, statuss, vendorIDs, cityCodes, params.IncludeStep, params.FromTime, params.ToTime, params.Lng, params.Lat, params.Span, params.Keyword, params.SortType, params.PageSize, params.Offset) } return retVal, "", err }) } // @Title 查看任务 // @Description 查看任务 // @Param token header string false "认证token" // @Param jobID query int false "任务ID" // @Param lng query float64 false "经度" // @Param lat query float64 false "维度" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetJobDetail [get] func (c *JobController) GetJobDetail() { c.callGetJobDetail(func(params *tJobGetJobDetailParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetJobDetail(params.Ctx, params.JobID, params.Lng, params.Lat) return retVal, "", err }) } // @Title 接任务 // @Description 接任务 // @Param token header string true "认证token" // @Param jobID formData int true "jobID" // @Param dropShippingDeliveryID formData int false "一件代发地址id" // @Param dropShippingCount formData int false "一件代发商品数量" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /AcceptJob [post] func (c *JobController) AcceptJob() { c.callAcceptJob(func(params *tJobAcceptJobParams) (retVal interface{}, errCode string, err error) { _, errCode, err = cms.AcceptJob(params.Ctx, params.JobID, params.DropShippingDeliveryID, params.DropShippingCount) return retVal, errCode, err }) } // @Title 用户取消接受的任务 // @Description 用户取消接受的任务 // @Param token header string true "认证token" // @Param jobID formData int true "jobID" // @Param jobOrderID formData int true "jobOrderID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CancelAcceptJob [post] func (c *JobController) CancelAcceptJob() { c.callCancelAcceptJob(func(params *tJobCancelAcceptJobParams) (retVal interface{}, errCode string, err error) { err = cms.CancelAcceptJob(params.Ctx, params.JobID, int64(params.JobOrderID)) return retVal, "", err }) } // @Title 查看接受的任务列表 // @Description 查看接受的任务列表 // @Param token header string true "认证token" // @Param userID query string false "用户ID" // @Param jobUserID query string false "发起任务的用户ID" // @Param jobOrderID query int false "任务订单ID" // @Param categoryID query string false "分类ID" // @Param statuss query string false "状态s" // @Param fromTime query string false "开始时间" // @Param toTime query string false "结束时间" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetJobOrders [get] func (c *JobController) GetJobOrders() { c.callGetJobOrders(func(params *tJobGetJobOrdersParams) (retVal interface{}, errCode string, err error) { var ( statuss []int ) if err = jxutils.Strings2Objs(params.Statuss, &statuss); err == nil { retVal, err = dao.GetJobOrders(dao.GetDB(), 0, int64(params.JobOrderID), params.UserID, params.JobUserID, "", utils.Str2Time(params.FromTime), utils.Str2Time(params.ToTime), statuss, params.PageSize, params.Offset) } return retVal, "", err }) } // @Title 提交任务 // @Description 提交任务 // @Param token header string true "认证token" // @Param payload formData string true "joborder type" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SubmitJob [post] func (c *JobController) SubmitJob() { c.callSubmitJob(func(params *tJobSubmitJobParams) (retVal interface{}, errCode string, err error) { var jobOrder *model.JobOrder if err = jxutils.Strings2Objs(params.Payload, &jobOrder); err == nil { err = cms.SubmitJob(params.Ctx, jobOrder) } return retVal, "", err }) } // @Title 审核任务 // @Description 审核任务 // @Param token header string true "认证token" // @Param jobOrderID formData int true "jobOrderID" // @Param status formData int true "审核标志,15 是通过,20是不通过" // @Param comment formData string false "审核理由" // @Param vendorWaybillID formData string false "运单号(一件代发)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /AuditJob [post] func (c *JobController) AuditJob() { c.callAuditJob(func(params *tJobAuditJobParams) (retVal interface{}, errCode string, err error) { err = cms.AuditJob(params.Ctx, params.JobOrderID, params.Status, params.Comment, params.VendorWaybillID) return retVal, "", err }) } // @Title 确认收货(一件代发) // @Description 确认收货(一件代发) // @Param token header string true "认证token" // @Param jobOrderID formData int true "jobOrderID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /ConfirmDropShippingJob [post] func (c *JobController) ConfirmDropShippingJob() { c.callConfirmDropShippingJob(func(params *tJobConfirmDropShippingJobParams) (retVal interface{}, errCode string, err error) { err = cms.ConfirmDropShippingJob(params.Ctx, params.JobOrderID) return retVal, "", err }) } // @Title 导入美团会员 // @Description 导入美团会员 // @Param token header string false "认证token" // @Param payload formData string true "mtmembers struct" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /ImprotMtMembers [post] func (c *JobController) ImprotMtMembers() { c.callImprotMtMembers(func(params *tJobImprotMtMembersParams) (retVal interface{}, errCode string, err error) { var mtMembers []*model.MtMember if err = jxutils.Strings2Objs(params.Payload, &mtMembers); err == nil { err = cms.ImprotMtMembers(params.Ctx, mtMembers) } return retVal, "", err }) } // @Title 充值美团会员 // @Description 充值美团会员 // @Param token header string true "认证token" // @Param phone formData int true "电话" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /RechargeMtMembers [post] func (c *JobController) RechargeMtMembers() { c.callRechargeMtMembers(func(params *tJobRechargeMtMembersParams) (retVal interface{}, errCode string, err error) { errCode, err = cms.RechargeMtMembers(params.Ctx, params.Phone) return retVal, errCode, err }) } // @Title 查看美团会员 // @Description 查看美团会员 // @Param token header string false "认证token" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetMtMembers [get] func (c *JobController) GetMtMembers() { c.callGetMtMembers(func(params *tJobGetMtMembersParams) (retVal interface{}, errCode string, err error) { retVal, err = dao.GetMtMembers(dao.GetDB()) return retVal, "", err }) } // @Title 发送京东快递 // @Description 发送京东快递 // @Param token header string true "认证token" // @Param payload formData string true "delivery order 类型" // @Param pickUpStartTime formData string false "预约取件开始时间" // @Param pickUpEndTime formData string false "预约取件结束时间" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SendJdDelivery [post] func (c *JobController) SendJdDelivery() { c.callSendJdDelivery(func(params *tJobSendJdDeliveryParams) (retVal interface{}, errCode string, err error) { var dOrder *model.DeliveryOrder if err = jxutils.Strings2Objs(params.Payload, &dOrder); err == nil { if params.PickUpStartTime != "" && params.PickUpEndTime != "" { dOrder.PickUpStartTime = utils.Str2Time(params.PickUpStartTime) dOrder.PickUpEndTime = utils.Str2Time(params.PickUpEndTime) } errCode, err = cms.SendJdDelivery(params.Ctx, dOrder) } return retVal, errCode, err }) } // @Title 取消京东快递 // @Description 取消京东快递 // @Param token header string true "认证token" // @Param vendorWaybillID formData string true "运单号" // @Param reason formData string true "取消原因" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CancelJdDelivery [post] func (c *JobController) CancelJdDelivery() { c.callCancelJdDelivery(func(params *tJobCancelJdDeliveryParams) (retVal interface{}, errCode string, err error) { err = cms.CancelJdDelivery(params.Ctx, params.VendorWaybillID, params.Reason) return retVal, "", err }) } // @Title 查询用户的京东快递 // @Description 查询用户的京东快递 // @Param token header string true "认证token" // @Param status query int false "订单状态" // @Param fromTime query string false "开始时间" // @Param toTime query string false "结束时间" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetJdDelivery [get] func (c *JobController) GetJdDelivery() { c.callGetJdDelivery(func(params *tJobGetJdDeliveryParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetJdDelivery(params.Ctx, params.Status, params.FromTime, params.ToTime, params.PageSize, params.Offset) return retVal, "", err }) } // @Title 查询京东快递物流信息 // @Description 查询京东快递物流信息 // @Param token header string true "认证token" // @Param vendorWaybillID query string false "运单号" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetDeliveryDetail [get] func (c *JobController) GetDeliveryDetail() { c.callGetDeliveryDetail(func(params *tJobGetDeliveryDetailParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetDeliveryDetail(params.Ctx, params.VendorWaybillID) return retVal, "", err }) } // @Title 地址识别 (txcloud购买) // @Description 地址识别 // @Param token header string true "认证token" // @Param address query string false "完整地址" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /AddressDistinguish [post] func (c *JobController) AddressDistinguish() { c.callAddressDistinguish(func(params *tJobAddressDistinguishParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.AddressDistinguish(params.Ctx, params.Address) return retVal, "", err }) } // @Title 查询所有快递物流信息 (txcloud购买) // @Description 查询所有快递物流信息 // @Param token header string true "认证token" // @Param vendorWaybillID query string false "运单号" // @Param comType query string false "快递公司编码" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetAllDeliveryDetail [get] func (c *JobController) GetAllDeliveryDetail() { c.callGetAllDeliveryDetail(func(params *tJobGetAllDeliveryDetailParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetAllDeliveryDetail(params.Ctx, params.VendorWaybillID, params.ComType) return retVal, "", err }) } // @Title 京东快递物流超重验证 // @Description 京东快递物流超重验证 // @Param token header string true "认证token" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CheckJdDeliveryWeight [post] func (c *JobController) CheckJdDeliveryWeight() { c.callCheckJdDeliveryWeight(func(params *tJobCheckJdDeliveryWeightParams) (retVal interface{}, errCode string, err error) { err = cms.CheckJdDeliveryWeight(params.Ctx) return retVal, "", err }) } // @Title 获取油站列表 // @Description 获取油站列表 // @Param token header string true "认证token" // @Param stationName query string false "油站名" // @Param cityCode query int false "城市ID" // @Param lat query float64 false "用户坐标" // @Param lng query float64 false "用户坐标" // @Param oilCode query string false "油号" // @Param sortType query int false "排序, 1为距离,2为评分,3为油价" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetStationList [get] func (c *JobController) GetStationList() { c.callGetStationList(func(params *tJobGetStationListParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetStationList(params.Ctx, params.StationName, params.CityCode, params.Lat, params.Lng, params.OilCode, params.SortType, params.Offset, params.PageSize) return retVal, "", err }) } // @Title 查询用户个人订单易加油 // @Description 查询用户个人订单 // @Param token header string true "认证token" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetEjyOrders [get] func (c *JobController) GetEjyOrders() { c.callGetEjyOrders(func(params *tJobGetEjyOrdersParams) (retVal interface{}, errCode string, err error) { mobile, _ := params.Ctx.GetMobileAndUserID() if mobile == "" { return nil, "", fmt.Errorf("未查询到用户手机号!请确认绑定了手机!") } retVal, err = api.EjyAPI.GetUserOrders(mobile, params.Offset) return retVal, "", err }) } // @Title 用户申请退款,易加油 // @Description 用户申请退款,易加油 // @Param token header string true "认证token" // @Param vendorOrderID query string true "易加油订单号" // @Param reason query string true "退款原因" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UserRefundEjy [get] func (c *JobController) UserRefundEjy() { c.callUserRefundEjy(func(params *tJobUserRefundEjyParams) (retVal interface{}, errCode string, err error) { mobile, _ := params.Ctx.GetMobileAndUserID() if mobile == "" { return nil, "", fmt.Errorf("未查询到用户手机号!请确认绑定了手机!") } retVal, err = api.EjyAPI.UserRefund(params.VendorOrderID, mobile, params.Reason) return retVal, "", err }) } // @Title 刷新任务状态 // @Description 刷新任务状态 // @Param token header string true "认证token" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /RefreshJobStatus [post] func (c *JobController) RefreshJobStatus() { c.callRefreshJobStatus(func(params *tJobRefreshJobStatusParams) (retVal interface{}, errCode string, err error) { err = cms.RefreshJobStatus(params.Ctx) return retVal, "", err }) } // @Title 设置任务标签 // @Description 设置任务标签 // @Param token header string true "认证token" // @Param jobIDs formData string true "任务IDs" // @Param endAt formData string true "截止日期" // @Param span formData int true "标签,1为置顶,2为推荐" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CreateJobSpan [post] func (c *JobController) CreateJobSpan() { c.callCreateJobSpan(func(params *tJobCreateJobSpanParams) (retVal interface{}, errCode string, err error) { var ( jobIDs []int ) if err = jxutils.Strings2Objs(params.JobIDs, &jobIDs); err == nil { err = cms.CreateJobSpan(params.Ctx, jobIDs, params.EndAt, params.Span) } return retVal, "", err }) } // @Title 置顶任务重排序 // @Description 置顶任务重排序 // @Param token header string true "认证token" // @Param jobIDs formData string true "任务IDs(按顺序)" // @Param span formData int true "标签,1为置顶,2为推荐" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /ReloadJobSpan [post] func (c *JobController) ReloadJobSpan() { c.callReloadJobSpan(func(params *tJobReloadJobSpanParams) (retVal interface{}, errCode string, err error) { var ( jobIDs []int ) if err = jxutils.Strings2Objs(params.JobIDs, &jobIDs); err == nil { err = cms.ReloadJobSpan(params.Ctx, jobIDs, params.Span) } return retVal, "", err }) } // @Title 根据地址查坐标 // @Description 根据地址查坐标 // @Param token header string true "认证token" // @Param address formData string true "地址" // @Param cityCode formData int true "cityCode" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetCoordinateFromAddress [get] func (c *JobController) GetCoordinateFromAddress() { c.callGetCoordinateFromAddress(func(params *tJobGetCoordinateFromAddressParams) (retVal interface{}, errCode string, err error) { place := &struct { Lng float64 `json:"lng"` Lat float64 `json:"lat"` }{} lng, lat, err := api.AutonaviAPI.GetCoordinateFromAddressByPage(params.Address, params.CityCode) place.Lng = lng place.Lat = lat return place, "", err }) }