|
@@ -0,0 +1,421 @@
|
|
|
+package controllers
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "hongze/hongze_web_mfyx/models"
|
|
|
+ "hongze/hongze_web_mfyx/models/order"
|
|
|
+ "hongze/hongze_web_mfyx/services"
|
|
|
+ "hongze/hongze_web_mfyx/utils"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+// 订单
|
|
|
+type OrderController struct {
|
|
|
+ BaseAuthController
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 通过文章创建订单
|
|
|
+// @Description 通过文章创建订单接口
|
|
|
+// @Param request body models.ActivitySingnupRep true "type json string"
|
|
|
+// @Success Ret=200 {object} models.SignupStatus
|
|
|
+// @router /addByArticle [post]
|
|
|
+func (this *OrderController) AddByArticle() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ user := this.User
|
|
|
+ if user == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,用户信息为空"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req order.CygxOrderAddReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ uid := user.UserId
|
|
|
+ goodsId := req.GoodsId
|
|
|
+ sourceId := req.SourceId
|
|
|
+ if goodsId == 0 {
|
|
|
+ br.Msg = "支付失败"
|
|
|
+ br.ErrMsg = "支付失败,goodsId 信息错误Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ goodsDetail, err := order.GetCygxGoodsDetailByGoodsId(goodsId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取信息失败"
|
|
|
+ br.ErrMsg = "获取信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var title string
|
|
|
+ oldOrderCode := services.GetHaverEquallyOrderByUser10Min(uid, goodsId) //获取用户十分钟之内是否有相同的订单信息
|
|
|
+ articleDetail, err := models.GetArticleDetailById(sourceId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取信息失败"
|
|
|
+ br.ErrMsg = "获取信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ title = articleDetail.Title
|
|
|
+ item := new(order.CygxOrder)
|
|
|
+ item.OrderCode = utils.GetOrdernum()
|
|
|
+ item.GoodsName = goodsDetail.GoodsName
|
|
|
+ item.GoodsId = goodsId
|
|
|
+ item.GoodsMoney = goodsDetail.Price
|
|
|
+ item.OrderMoney = goodsDetail.CurrentPrice
|
|
|
+ item.SourceId = sourceId
|
|
|
+ item.Source = utils.CYGX_OBJ_ARTICLE
|
|
|
+ item.SourceTitle = title
|
|
|
+ item.UserId = user.UserId
|
|
|
+ item.Mobile = user.Mobile
|
|
|
+ item.Email = user.Email
|
|
|
+ item.CompanyId = user.CompanyId
|
|
|
+ item.CompanyName = user.CompanyName
|
|
|
+ item.RealName = user.RealName
|
|
|
+ item.SellerName, item.SellerId = services.GetSellerName(user) // 销售姓名
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
+ item.RegisterPlatform = utils.REGISTER_PLATFORM
|
|
|
+ item.OrderType = 1
|
|
|
+ //如果十分钟之内有相同的订单就修改,没有就新增
|
|
|
+ if oldOrderCode == "" {
|
|
|
+ err = order.AddCygxOrder(item)
|
|
|
+ } else {
|
|
|
+ item.OrderCode = oldOrderCode
|
|
|
+ err = order.UpdateCygxOrder(item, oldOrderCode)
|
|
|
+ }
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "创建订单信息失败"
|
|
|
+ br.ErrMsg = "创建订单信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ JsapiApiResp, err := services.ExampleJsapiApiServicePrepay(item, user.UnionId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "创建订单信息失败"
|
|
|
+ br.ErrMsg = "创建订单信息失败,ExampleJsapiApiServicePrepayErr:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(order.WxJsapiApiResp)
|
|
|
+ resp.Detail = JsapiApiResp
|
|
|
+ resp.OrderCode = item.OrderCode
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "操作成功"
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 通过活动创建订单
|
|
|
+// @Description 通过活动创建订单接口
|
|
|
+// @Param request body models.ActivitySingnupRep true "type json string"
|
|
|
+// @Success Ret=200 {object} models.SignupStatus
|
|
|
+// @router /addByActivity [post]
|
|
|
+func (this *OrderController) AddByActivity() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ user := this.User
|
|
|
+ if user == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,用户信息为空"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req order.CygxOrderAddReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ uid := user.UserId
|
|
|
+ goodsId := req.GoodsId
|
|
|
+ sourceId := req.SourceId
|
|
|
+ if goodsId == 0 {
|
|
|
+ br.Msg = "支付失败"
|
|
|
+ br.ErrMsg = "支付失败,goodsId 信息错误Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ goodsDetail, err := order.GetCygxGoodsDetailByGoodsId(goodsId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取信息失败"
|
|
|
+ br.ErrMsg = "获取信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ activityDetail, err := models.GetAddActivityInfoById(sourceId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取信息失败"
|
|
|
+ br.ErrMsg = "获取信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var title string
|
|
|
+ var oldOrderCode string
|
|
|
+ //var _ int
|
|
|
+ item := new(order.CygxOrder)
|
|
|
+ if (!activityDetail.IsResearchPoints && activityDetail.IsLimitPeople == 0) || activityDetail.YidongActivityId != "" { //易董的活动 或者(不扣点且不限制人数)走月卡日卡逻辑
|
|
|
+ oldOrderCode = services.GetHaverEquallyOrderByUser10Min(uid, goodsId) //获取用户十分钟之内是否有相同的订单信息
|
|
|
+ item.OrderType = 1
|
|
|
+ } else {
|
|
|
+ oldOrderCode, _ = services.GetHaverEquallyOrderByUser10MinByActivty(uid, sourceId)
|
|
|
+ item.OrderType = 2
|
|
|
+ }
|
|
|
+
|
|
|
+ title = activityDetail.ActivityName
|
|
|
+ item.OrderCode = utils.GetOrdernum()
|
|
|
+ if activityDetail.ActivityTypeName == "买方线下交流" {
|
|
|
+ item.GoodsName = "买方交流"
|
|
|
+ }
|
|
|
+ if activityDetail.ActivityTypeName == "专家电话会" || activityDetail.ActivityTypeName == "专家线下沙龙" {
|
|
|
+ item.GoodsName = "专家调研"
|
|
|
+ }
|
|
|
+ if activityDetail.ActivityTypeName == "公司调研电话会" {
|
|
|
+ item.GoodsName = "买方交流"
|
|
|
+ }
|
|
|
+ fmt.Println("item.GoodsName", item.GoodsName)
|
|
|
+ //return
|
|
|
+ item.GoodsId = goodsId
|
|
|
+ item.GoodsMoney = goodsDetail.Price
|
|
|
+ item.OrderMoney = goodsDetail.CurrentPrice
|
|
|
+ item.SourceId = sourceId
|
|
|
+ item.Source = utils.CYGX_OBJ_ACTIVITY
|
|
|
+ item.SourceTitle = title
|
|
|
+ item.UserId = user.UserId
|
|
|
+ item.Mobile = user.Mobile
|
|
|
+ item.Email = user.Email
|
|
|
+ item.CompanyId = user.CompanyId
|
|
|
+ item.CompanyName = user.CompanyName
|
|
|
+ item.RealName = user.RealName
|
|
|
+ item.SellerName, item.SellerId = services.GetSellerName(user) // 销售姓名
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
+ item.RegisterPlatform = utils.REGISTER_PLATFORM
|
|
|
+
|
|
|
+ //如果十分钟之内有相同的订单就修改,没有就新增
|
|
|
+ if oldOrderCode == "" {
|
|
|
+ err = order.AddCygxOrder(item)
|
|
|
+ } else {
|
|
|
+ item.OrderCode = oldOrderCode
|
|
|
+ err = order.UpdateCygxOrder(item, oldOrderCode)
|
|
|
+ }
|
|
|
+ JsapiApiResp, err := services.ExampleJsapiApiServicePrepay(item, user.UnionId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "创建订单信息失败"
|
|
|
+ br.ErrMsg = "创建订单信息失败,ExampleJsapiApiServicePrepayErr:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(order.WxJsapiApiResp)
|
|
|
+ resp.Detail = JsapiApiResp
|
|
|
+ resp.OrderCode = item.OrderCode
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "创建订单信息失败"
|
|
|
+ br.ErrMsg = "创建订单信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "操作成功"
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 用户订单列表
|
|
|
+// @Description 用户订单列表接口
|
|
|
+// @Param PageSize query int true "每页数据条数"
|
|
|
+// @Param CurrentIndex query int true "当前页页码,从1开始"
|
|
|
+// @Param OrderType query int false "订单类型 1:畅读卡订单,2:单场付费订单"
|
|
|
+// @Success 200 {object} models.SpecialListResp
|
|
|
+// @router /user/orderList [get]
|
|
|
+func (this *OrderController) UserOrderList() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ user := this.User
|
|
|
+ if user == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,用户信息为空"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+ orderType, _ := this.GetInt("OrderType", 1)
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = utils.StartIndex(currentIndex, pageSize)
|
|
|
+ resp := new(order.UserOrderListResp)
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ userId := user.UserId
|
|
|
+
|
|
|
+ if orderType > 0 {
|
|
|
+ condition += ` AND order_type = ? `
|
|
|
+ pars = append(pars, orderType)
|
|
|
+ }
|
|
|
+ condition += ` AND user_id = ? `
|
|
|
+ pars = append(pars, userId)
|
|
|
+
|
|
|
+ total, err := order.GetCygxOrderCount(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败, Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ condition += ` ORDER BY order_id DESC `
|
|
|
+ list, err := order.GetCygxOrderList(condition, pars, startSize, pageSize)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败, Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range list {
|
|
|
+ item := new(order.OrderListResp)
|
|
|
+ item.OrderCode = v.OrderCode
|
|
|
+ item.OrderMoney = v.OrderMoney
|
|
|
+ item.SourceId = v.SourceId
|
|
|
+ item.Source = v.Source
|
|
|
+ item.SourceTitle = v.SourceTitle
|
|
|
+ item.OrderStatus = v.OrderStatus
|
|
|
+ if v.OrderStatus == 0 {
|
|
|
+ item.OrderStatusText = "已取消"
|
|
|
+ } else if v.OrderStatus == 1 {
|
|
|
+ item.OrderStatusText = "待支付"
|
|
|
+ } else if v.OrderStatus == 2 {
|
|
|
+ item.OrderStatusText = "已支付"
|
|
|
+ }
|
|
|
+ if orderType == 1 {
|
|
|
+ if v.GoodsId == 1 {
|
|
|
+ item.LabelKeywordImgLink = utils.LABEL_ICO_7 //日卡图标
|
|
|
+ item.StartDate = v.StartDate.Format(utils.FormatDateTime)
|
|
|
+ item.EndDate = v.EndDate.Format(utils.FormatDateTime)
|
|
|
+ } else if v.GoodsId == 2 {
|
|
|
+ item.LabelKeywordImgLink = utils.LABEL_ICO_8 // 月卡图标
|
|
|
+ item.StartDate = v.StartDate.Format(utils.FormatDate)
|
|
|
+ item.EndDate = v.EndDate.Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ item.LabelKeywordImgLink = utils.LABEL_ICO_3
|
|
|
+ }
|
|
|
+ item.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
|
|
|
+ resp.List = append(resp.List, item)
|
|
|
+ }
|
|
|
+
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
+ resp.Paging = page
|
|
|
+
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 订单支付详情
|
|
|
+// @Description 订单支付详情接口
|
|
|
+// @Param OrderCode query string false "订单号"
|
|
|
+// @Success 200 {object} models.SpecialListResp
|
|
|
+// @router /orderPay/detail [get]
|
|
|
+func (this *OrderController) OrderDetail() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ user := this.User
|
|
|
+ if user == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,用户信息为空"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(order.PayEdOrderDetailResp)
|
|
|
+ orderCode := this.GetString("OrderCode")
|
|
|
+ orderDetail, err := order.GetCygxOrderDetailByOrderCode(orderCode)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败, Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if orderDetail.OrderType == 1 && orderDetail.OrderStatus == 2 {
|
|
|
+ cardDetail, err := order.GetCygxOrderUserCardDetailByOrderCode(orderCode)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败, Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp.EndDate = strings.Replace(cardDetail.EndDate.Format(utils.FormatDateTime), "00:00:00", "", -1)
|
|
|
+ }
|
|
|
+ resp.OrderCode = orderDetail.OrderCode
|
|
|
+ resp.OrderType = orderDetail.OrderType
|
|
|
+ resp.OrderStatus = orderDetail.OrderStatus
|
|
|
+ resp.Source = orderDetail.Source
|
|
|
+ resp.SourceId = orderDetail.SourceId
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 通过活动创建订单
|
|
|
+// @Description 通过活动创建订单接口
|
|
|
+// @Param request body models.ActivitySingnupRep true "type json string"
|
|
|
+// @Success Ret=200 {object} models.SignupStatus
|
|
|
+// @router /cancel [post]
|
|
|
+func (this *OrderController) Cancel() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ user := this.User
|
|
|
+ if user == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,用户信息为空"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req order.CygxOrderCancelReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ orderCode := req.OrderCode
|
|
|
+ orderDetail, err := order.GetCygxOrderDetailByOrderCode(orderCode)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败, Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err = order.CancelCygxOrder(orderDetail)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "取消订单失败"
|
|
|
+ br.ErrMsg = "获取失败, Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "操作成功"
|
|
|
+}
|