Files
jx-callback/controllers/job_controller.go
苏尹岚 610b767814 aa
2021-04-14 15:51:11 +08:00

582 lines
24 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package controllers
import (
"fmt"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"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"
beego "github.com/astaxie/beego/adapter"
)
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
})
}
// @Title 手动刷新京东快递任务
// @Description 手动刷新京东快递任务
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /RefreshJdDelivery [post]
func (c *JobController) RefreshJdDelivery() {
c.callRefreshJdDelivery(func(params *tJobRefreshJdDeliveryParams) (retVal interface{}, errCode string, err error) {
err = cms.RefreshJdDelivery(jxcontext.AdminCtx)
return retVal, "", err
})
}
// @Title 测试接口
// @Description 测试接口
// @Param token header string false "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /TempJob [post]
func (c *JobController) TempJob() {
c.callTempJob(func(params *tJobTempJobParams) (retVal interface{}, errCode string, err error) {
cms.TempJob()
return retVal, "", err
})
}
// @Title 查询联盟任务
// @Description 查询联盟任务
// @Param token header string true "认证token"
// @Param vendorID query int true "平台ID"
// @Param actType query int true "活动类型ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetUnionActList [get]
func (c *JobController) GetUnionActList() {
c.callGetUnionActList(func(params *tJobGetUnionActListParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.GetUnionActList(params.Ctx, params.VendorID, params.ActType)
return retVal, "", err
})
}
// @Title 分享联盟链接
// @Description 分享联盟链接
// @Param token header string true "认证token"
// @Param jobID formData int true "任务ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /ShareUnionLink [post]
func (c *JobController) ShareUnionLink() {
c.callShareUnionLink(func(params *tJobShareUnionLinkParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.ShareUnionLink(params.Ctx, 1, 1)
return retVal, "", err
})
}