package coupon import ( "encoding/json" "errors" "net/http" "spaceofcheng/services/controllers" cpModel "spaceofcheng/services/models/coupon" "spaceofcheng/services/models/model" "spaceofcheng/services/service/coupon" "spaceofcheng/services/utils" "strings" ) // CouponController 商品 type CouponController struct { serv *coupon.CouponServ controllers.BaseController } // Constructor 初始化 Controller // @Title Constructor // @Description 初始化 Controller, 系统自动调用 func (c *CouponController) Constructor() { c.serv = coupon.NewCouponServ(c.Context) } // ListByCase 获取券列表 func (c *CouponController) ListByCase() { caseID := c.GetString("caseid") page, _ := c.GetInt("page") pagesize, _ := c.GetInt("pagesize") if page < 0 { page = 1 } if pagesize <= 0 { pagesize = 10 } sendtype := c.GetString("sendtype") usetype := c.GetString("usetype") usedid := c.GetString("usedid") list, total, err := c.serv.GetCouponList(caseID, sendtype, usetype, usedid, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(map[string]interface{}{ "list": list, "page": page, "pagesize": pagesize, "pagenum": total, }) } // GetCouponByIDForAdmin 获取优惠券 // 管理端 func (c *CouponController) GetCouponByIDForAdmin() { id := c.GetString(":id") if id == "" { c.ResponseError(errors.New("未指定券")) } cp, err := c.serv.GetCouponByIDWithCheck(id) if err != nil { c.ResponseError(err) } c.ResponseJSON(map[string]interface{}{ "coupon": cp, }) } // GetCouponByID 获取优惠券 // 微信端 func (c *CouponController) GetCouponByID() { id := c.GetString(":id") if id == "" { c.ResponseError(errors.New("未指定券")) } cp, err := c.serv.GetCouponInfoByID(id) if err != nil { c.ResponseError(err) } c.ResponseJSON(map[string]interface{}{ "coupon": cp, }) } // SaveCoupon 保存优惠券 func (c *CouponController) SaveCoupon() { jsnStr := c.GetString("info") if jsnStr == "" { c.ResponseError(errors.New("未接收到保存内容")) } cp := cpModel.CouponInfo{} if err := json.Unmarshal([]byte(jsnStr), &cp); err != nil { utils.LogError("接收优惠券信息失败: " + err.Error()) c.ResponseError(errors.New("接收参数失败"), http.StatusInternalServerError) } // TODO // 校验各字段不能为空 // 入库 cp.CouponId = "" if err := c.serv.SaveCoupon(&cp); err != nil { c.ResponseError(err) } c.ResponseJSON(map[string]interface{}{ "coupon": cp, }) } // UpdateCoupon 更新优惠券 func (c *CouponController) UpdateCoupon() { jsnStr := c.GetString("info") if jsnStr == "" { c.ResponseError(errors.New("未接收到更新内容")) } id := c.GetString(":id") if id == "" { c.ResponseError(errors.New("未指定券")) } cp := cpModel.CouponInfo{} if err := json.Unmarshal([]byte(jsnStr), &cp); err != nil { utils.LogError("接收优惠券信息失败: " + err.Error()) c.ResponseError(errors.New("接收参数失败"), http.StatusInternalServerError) } // TODO // 校验各字段不能为空 // 入库 cp.CouponId = id if err := c.serv.UpdateCoupon(&cp); err != nil { c.ResponseError(err) } c.ResponseJSON(map[string]interface{}{ "coupon": cp, }) } // GiveCoupon 赠送优惠券 func (c *CouponController) GiveCoupon() { id := c.GetString(":id") if id == "" { c.ResponseError(errors.New("未指定券")) } uids := c.GetString(":users") if uids == "" { c.ResponseError(errors.New("未指定赠送人")) } err := c.serv.GiveCoupon(id, strings.Split(uids, ",")) if err != nil { c.ResponseError(err) } c.ResponseJSON("ok") } // GetCouponBySendType 根据类型获取优惠券 func (c *CouponController) GetCouponBySendType() { sendtype := c.GetString(":type") coupons, err := c.serv.GetCouponBySendType(sendtype) if err != nil { c.ResponseError(err) } c.ResponseJSON(coupons) } // GetCouponWithCustomer 获取优惠券领取信息 func (c *CouponController) GetCouponWithCustomer() { couponid := c.GetString(":id") couponDetail, err := c.serv.GetCouponWithCustomer(couponid) if err != nil { c.ResponseError(err) } c.ResponseJSON(couponDetail) } // GetCouponByCustomer 获取我的优惠券信息 func (c *CouponController) GetCouponByCustomer() { coupons, err := c.serv.GetCouponByCustomer() if err != nil { c.ResponseError(err) } c.ResponseJSON(coupons) } // GetCustomerCouponByID 获取我的优惠券详情 func (c *CouponController) GetCustomerCouponByID() { id := c.GetString(":id") coupon, err := c.serv.GetCustomerCouponByID(id) if err != nil { c.ResponseError(err) } c.ResponseJSON(coupon) } // GetCaseUsableCoupon 获取案场可用券 func (c *CouponController) GetCaseUsableCoupon() { page, _ := c.GetInt("page") pageSize, _ := c.GetInt("pagesize") coupons, err := c.serv.GetCaseUsableCoupon(page, pageSize) if err != nil { c.ResponseError(err) } c.ResponseJSON(coupons) } // ReceiveCoupon 卡领取 func (c *CouponController) ReceiveCoupon() { id := c.GetString(":id") saleid := c.GetString("saleid") serialcode := c.GetString("serialcode") cust := c.Context.Get("customer").(model.TaCustomer) if cust.Phone == "" { c.ResponseError( errors.New("用户未登录或绑定"), http.StatusNotAcceptable, ) } err := c.serv.ReceiveCoupon(id, saleid, serialcode) if err != nil { c.ResponseError(err) } c.ResponseJSON("领取成功!") } // ChannelReceiveCoupon 渠道端卡领取 func (c *CouponController) ChannelReceiveCoupon() { id := c.GetString(":id") cust := c.Context.Get("customer").(model.TaCustomer) if cust.Phone == "" { c.ResponseError( errors.New("用户未登录或绑定"), http.StatusNotAcceptable, ) } err := c.serv.ChannelReceiveCoupon(id) if err != nil { c.ResponseError(err) } c.ResponseJSON("领取成功!") } // GetCustomerCouponByCustomerAndSale 获取我的卡信息 func (c *CouponController) GetCustomerCouponByCustomerAndSale() { customerid := c.GetString(":id") page, _ := c.GetInt("page") pagesize, _ := c.GetInt("pagesize") Coupons, err := c.serv.GetCustomerCouponByCustomerAndSale(customerid, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(Coupons) } func (c *CouponController) GetSysCouponByCase() { caseId := c.GetString(":caseId") coupon, err := c.serv.GetSysCouponByCase(caseId) if err != nil { c.ResponseError(err) } c.ResponseJSON(coupon) }