1.为了同步10/19号之前的数据,新增了excel导入相关接口;
2.删除回调通知,和第三方渠道方接口;
This commit is contained in:
parent
f7ccec1f92
commit
c262bbd549
|
@ -1,12 +1,15 @@
|
|||
package migumanage
|
||||
|
||||
import (
|
||||
"encoding/csv"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-admin-team/go-admin-core/logger"
|
||||
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
|
||||
"go-admin/app/admin/models"
|
||||
"go-admin/tools"
|
||||
"io"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -1286,3 +1289,204 @@ func (e MiGuDeployService) AddProduct(c *gin.Context) {
|
|||
//
|
||||
// e.OK("", "删除成功")
|
||||
//}
|
||||
|
||||
// ImportExcelToMgOrderHandler 处理Excel文件导入请求
|
||||
// @Summary 导入订单Excel文件
|
||||
// @Tags 2024-咪咕-管理后台
|
||||
// @Accept multipart/form-data
|
||||
// @Produce json
|
||||
// @Param file formData file true "Excel文件"
|
||||
// @Success 200 {object} map[string]string{"message": "导入成功"}
|
||||
// @Router /api/v1/admin/order/import [post]
|
||||
func (e MiGuDeployService) ImportExcelToMgOrderHandler(c *gin.Context) {
|
||||
err := e.MakeContext(c).MakeOrm().Errors
|
||||
if err != nil {
|
||||
e.Logger.Error(err)
|
||||
response.Error(c, http.StatusInternalServerError, err, "创建上下文失败")
|
||||
return
|
||||
}
|
||||
|
||||
// 从请求中获取文件
|
||||
file, err := c.FormFile("file")
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "无法读取文件"})
|
||||
return
|
||||
}
|
||||
|
||||
// 打开上传的文件
|
||||
fileStream, err := file.Open()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "无法打开文件"})
|
||||
return
|
||||
}
|
||||
defer fileStream.Close()
|
||||
|
||||
// 创建 CSV 阅读器
|
||||
reader := csv.NewReader(fileStream)
|
||||
reader.LazyQuotes = true
|
||||
|
||||
// 跳过 CSV 文件的标题行
|
||||
if _, err := reader.Read(); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "无法读取CSV标题行"})
|
||||
return
|
||||
}
|
||||
|
||||
//nRow := 0
|
||||
// 逐行读取 CSV 并插入数据库
|
||||
for {
|
||||
//nRow++
|
||||
row, err := reader.Read()
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "读取CSV文件失败"})
|
||||
return
|
||||
}
|
||||
|
||||
// 检查数据是否齐全
|
||||
if len(row) < 4 {
|
||||
continue // 跳过数据不全的行
|
||||
}
|
||||
|
||||
// 解析订阅时间
|
||||
subscribeTime, err := time.Parse("2006-01-02 15:04:05", row[3])
|
||||
if err != nil {
|
||||
fmt.Printf("解析时间错误: %v\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
const cutoffTimeStr = "2024-10-18 18:58:00"
|
||||
cutoffTime, _ := time.Parse("2006-01-02 15:04:05", cutoffTimeStr)
|
||||
// 判断是否超过截止时间
|
||||
if subscribeTime.After(cutoffTime) {
|
||||
fmt.Printf("跳过超过截止时间的记录: %v\n", subscribeTime)
|
||||
continue
|
||||
}
|
||||
|
||||
// 将时间转换为 UTC+08:00
|
||||
// 将时间往前推8小时
|
||||
localTime := subscribeTime.Add(-8 * time.Hour)
|
||||
|
||||
// 创建MgOrder对象
|
||||
order := models.MgOrderCopy{
|
||||
ProductID: 1,
|
||||
ChannelCode: "6015150807",
|
||||
OrderSerial: models.GetExcelOrderSerial(e.Orm, subscribeTime),
|
||||
SubscribeTime: &localTime,
|
||||
PhoneNumber: row[0],
|
||||
ChannelTradeNo: row[1],
|
||||
ExternalOrderID: row[2],
|
||||
State: 1,
|
||||
}
|
||||
|
||||
order.CreatedAt = localTime
|
||||
order.UpdatedAt = localTime
|
||||
order.SM4PhoneNumber, _ = tools.SM4Encrypt(models.SM4KEy, order.PhoneNumber)
|
||||
|
||||
// 插入到数据库
|
||||
if err := e.Orm.Create(&order).Error; err != nil {
|
||||
fmt.Printf("插入订单数据失败: %v\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
fmt.Println("order is:", order)
|
||||
//if nRow > 4 {
|
||||
// break
|
||||
//}
|
||||
}
|
||||
|
||||
// 返回成功消息
|
||||
c.JSON(http.StatusOK, gin.H{"message": "导入成功"})
|
||||
}
|
||||
|
||||
// ImportExcelToMgOrderHandlerUpdate 处理Excel文件导入请求
|
||||
// @Summary 导入订单Excel退订文件
|
||||
// @Tags 2024-咪咕-管理后台
|
||||
// @Accept multipart/form-data
|
||||
// @Produce json
|
||||
// @Param file formData file true "Excel文件"
|
||||
// @Success 200 {object} map[string]string{"message": "导入成功"}
|
||||
// @Router /api/v1/admin/order/import_update [post]
|
||||
func (e MiGuDeployService) ImportExcelToMgOrderHandlerUpdate(c *gin.Context) {
|
||||
err := e.MakeContext(c).MakeOrm().Errors
|
||||
if err != nil {
|
||||
e.Logger.Error(err)
|
||||
response.Error(c, http.StatusInternalServerError, err, "创建上下文失败")
|
||||
return
|
||||
}
|
||||
|
||||
// 从请求中获取文件
|
||||
file, err := c.FormFile("file")
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "无法读取文件"})
|
||||
return
|
||||
}
|
||||
|
||||
// 打开上传的文件
|
||||
fileStream, err := file.Open()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "无法打开文件"})
|
||||
return
|
||||
}
|
||||
defer fileStream.Close()
|
||||
|
||||
// 创建 CSV 阅读器
|
||||
reader := csv.NewReader(fileStream)
|
||||
reader.LazyQuotes = true
|
||||
|
||||
// 跳过 CSV 文件的标题行
|
||||
if _, err := reader.Read(); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "无法读取CSV标题行"})
|
||||
return
|
||||
}
|
||||
|
||||
//nRow := 0
|
||||
// 逐行读取 CSV 并插入数据库
|
||||
for {
|
||||
//nRow++
|
||||
row, err := reader.Read()
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "读取CSV文件失败"})
|
||||
return
|
||||
}
|
||||
|
||||
// 检查数据是否齐全
|
||||
if len(row) < 3 {
|
||||
continue // 跳过数据不全的行
|
||||
}
|
||||
|
||||
// 将时间往前推8小时
|
||||
//localTime := subscribeTime.Add(-8 * time.Hour)
|
||||
|
||||
if !(row[0] != "" && len(row[0]) == 11) {
|
||||
continue
|
||||
}
|
||||
|
||||
if row[0] == "15812800163" {
|
||||
fmt.Println("found phone number: 15812800163")
|
||||
break
|
||||
}
|
||||
|
||||
unsubscribeTime, _ := models.ConvertStringToTime(row[2])
|
||||
|
||||
err = e.Orm.Table("mg_order_copy").Where("phone_number = ?", row[0]).Updates(map[string]interface{}{
|
||||
"state": models.UnsubscribeOK,
|
||||
"unsubscribe_time": unsubscribeTime,
|
||||
"updated_at": unsubscribeTime,
|
||||
}).Error
|
||||
if err != nil {
|
||||
fmt.Println("CheckOrderState update mg_order err:", err.Error())
|
||||
continue
|
||||
}
|
||||
//if nRow > 4 {
|
||||
// break
|
||||
//}
|
||||
}
|
||||
|
||||
// 返回成功消息
|
||||
c.JSON(http.StatusOK, gin.H{"message": "导入成功"})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user