256 lines
5.0 KiB
Go
256 lines
5.0 KiB
Go
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/go-kratos/kratos/v2/transport/http"
|
|
"io"
|
|
http2 "net/http"
|
|
"strconv"
|
|
"voucher/internal/biz/bo"
|
|
"voucher/internal/biz/do"
|
|
)
|
|
|
|
func (this *CmbService) OrderNotifyRetry(ctx http.Context) error {
|
|
|
|
bodyBytes, err := io.ReadAll(ctx.Request().Body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var req *do.OrderNotifyRetry
|
|
if err = json.Unmarshal(bodyBytes, &req); err != nil {
|
|
return err
|
|
}
|
|
|
|
if req == nil {
|
|
return fmt.Errorf("req is empty")
|
|
}
|
|
|
|
if req.StartTime == "" || req.EndTime == "" {
|
|
return fmt.Errorf("start_time or end_time is empty")
|
|
}
|
|
|
|
return this.VoucherBiz.PushOrderNotifyRetry(ctx, req)
|
|
}
|
|
|
|
func (this *CmbService) NotifyRetry(ctx http.Context) error {
|
|
id := ctx.Vars().Get("id")
|
|
if id == "" {
|
|
return fmt.Errorf("id is empty")
|
|
}
|
|
|
|
orderNotifyId, err := strconv.ParseUint(id, 10, 64)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return this.VoucherBiz.PushNotifyRetryDelayMQ(ctx, 1, orderNotifyId)
|
|
}
|
|
|
|
var ds = map[string]bool{
|
|
"13474987525": true,
|
|
"15221117226": true,
|
|
"18666173766": true,
|
|
}
|
|
|
|
func (this *CmbService) QueryOrder(ctx http.Context) error {
|
|
|
|
phone := ctx.Vars().Get("phone")
|
|
if phone == "" {
|
|
return fmt.Errorf("phone is empty")
|
|
}
|
|
|
|
_, ok := ds[phone]
|
|
if !ok {
|
|
return fmt.Errorf("无权限~")
|
|
}
|
|
|
|
orderNo := ctx.Vars().Get("order_no")
|
|
if orderNo == "" {
|
|
return fmt.Errorf("orderNo is empty")
|
|
}
|
|
|
|
isNotice := ctx.Vars().Get("is_notice")
|
|
|
|
str, err := this.VoucherBiz.QueryOrder(ctx, orderNo, isNotice)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
ctx.Response().Header().Add("Content-Type", "text/plain; charset=utf-8")
|
|
ctx.Response().WriteHeader(http2.StatusOK)
|
|
_, err = ctx.Response().Write([]byte(str))
|
|
return err
|
|
}
|
|
|
|
func (this *CmbService) QueryStock(ctx http.Context) error {
|
|
|
|
no := ctx.Vars().Get("product_no")
|
|
if no == "" {
|
|
return fmt.Errorf("product_no is empty")
|
|
}
|
|
|
|
resp, err := this.VoucherBiz.CmbProductQuery(ctx, no)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return ctx.JSON(http2.StatusOK, resp)
|
|
}
|
|
|
|
func (this *CmbService) PushWechatQuery(ctx http.Context) error {
|
|
|
|
bodyBytes, err := io.ReadAll(ctx.Request().Body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var req *do.WechatQuery
|
|
if err = json.Unmarshal(bodyBytes, &req); err != nil {
|
|
return err
|
|
}
|
|
|
|
if req == nil {
|
|
return fmt.Errorf("req is empty")
|
|
}
|
|
|
|
if req.StartTime == "" || req.EndTime == "" {
|
|
return fmt.Errorf("start_time or end_time is empty")
|
|
}
|
|
|
|
if err = this.VoucherBiz.PushWechatQuery(ctx, req); err != nil {
|
|
return err
|
|
}
|
|
|
|
return ctx.JSON(http2.StatusOK, map[string]interface{}{
|
|
"data": req,
|
|
})
|
|
}
|
|
|
|
func (this *CmbService) TimeSliceQueryPush(ctx http.Context) error {
|
|
|
|
bodyBytes, err := io.ReadAll(ctx.Request().Body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var req *do.RdsWechatQuery
|
|
if err = json.Unmarshal(bodyBytes, &req); err != nil {
|
|
return err
|
|
}
|
|
|
|
if req == nil {
|
|
return fmt.Errorf("req is empty")
|
|
}
|
|
|
|
if req.StartTime == "" || req.EndTime == "" {
|
|
return fmt.Errorf("start_time or end_time is empty")
|
|
}
|
|
|
|
if req.GoNum > 10 {
|
|
return fmt.Errorf("协程数量不能大于10")
|
|
}
|
|
|
|
_, err = this.timeSliceQuery.Push(ctx, req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return ctx.JSON(http2.StatusOK, req)
|
|
}
|
|
|
|
func (this *CmbService) PushWechatRetry(ctx http.Context) error {
|
|
|
|
batchNo := ctx.Vars().Get("batch_no")
|
|
if batchNo == "" {
|
|
return fmt.Errorf("batch_no is empty")
|
|
}
|
|
|
|
err := this.VoucherBiz.PushWechatRetry(ctx, batchNo)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return ctx.JSON(http2.StatusOK, map[string]interface{}{
|
|
"data": batchNo,
|
|
})
|
|
}
|
|
|
|
func (this *CmbService) WarningBudget(ctx http.Context) error {
|
|
|
|
id := ctx.Vars().Get("id")
|
|
if id == "" {
|
|
return fmt.Errorf("id is empty")
|
|
}
|
|
|
|
int64Id, err := strconv.ParseInt(id, 10, 32)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err = this.VoucherBiz.Warning(ctx, int32(int64Id)); err != nil {
|
|
return err
|
|
}
|
|
|
|
return ctx.JSON(http2.StatusOK, map[string]interface{}{
|
|
"data": id,
|
|
})
|
|
}
|
|
|
|
func (this *CmbService) SpecifyNotification(ctx http.Context) error {
|
|
|
|
bodyBytes, err := io.ReadAll(ctx.Request().Body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var req *bo.FindInBatchesBo
|
|
if err = json.Unmarshal(bodyBytes, &req); err != nil {
|
|
return err
|
|
}
|
|
|
|
if req == nil {
|
|
return fmt.Errorf("req is empty")
|
|
}
|
|
|
|
if req.OutBizNos == nil && req.OrderNos == nil && req.VoucherNos == nil {
|
|
return fmt.Errorf("out_biz_no or order_no or voucher_no is empty")
|
|
}
|
|
|
|
err = this.VoucherBiz.PushRetryNotify(ctx, req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return ctx.String(http2.StatusOK, string(bodyBytes))
|
|
}
|
|
|
|
func (this *CmbService) UsedNotifyPush(ctx http.Context) error {
|
|
|
|
bodyBytes, err := io.ReadAll(ctx.Request().Body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var req *do.WechatUsedQuery
|
|
if err = json.Unmarshal(bodyBytes, &req); err != nil {
|
|
return err
|
|
}
|
|
|
|
if req == nil {
|
|
return fmt.Errorf("req is empty")
|
|
}
|
|
|
|
if req.StartTime == "" && req.EndTime == "" {
|
|
return fmt.Errorf("start time or end time is empty")
|
|
}
|
|
|
|
err = this.VoucherBiz.UsedNotifyPush(ctx, req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return ctx.String(http2.StatusOK, string(bodyBytes))
|
|
}
|