mh_goadmin_server/app/admin/apis/ordermanage/order.go
chenlin 0a5fe58bbe 优化生产反馈缺陷:
1.小程序调用erp登录接口不判断验证码;
2.修改原接口的翻页相关字段;
3.修复float64转int32精度丢失的缺陷;
4.注释库存导入时采购价需大于0的校验;
5.相关域名改成生产环境域名;
2024-07-03 18:56:33 +08:00

307 lines
8.3 KiB
Go

package ordermanage
import (
"encoding/json"
"errors"
"fmt"
"github.com/gin-gonic/gin"
"go-admin/app/admin/models"
orm "go-admin/common/global"
"go-admin/logger"
"go-admin/tools/app"
"net/http"
)
// OrderList 查询租赁订单列表
// @Summary 查询租赁订单列表
// @Tags 租卡系统-订单管理
// @Produce json
// @Accept json
// @Param request body models.OrderListReq true "查询租赁订单列表"
// @Success 200 {object} app.Response "{"code": 200, "data": { "total": 4, "pageIndex":0, "total_page":10, "list":{} }}"
// @Router /api/v1/order/list [post]
func OrderList(c *gin.Context) {
req := &models.OrderListReq{}
if c.ShouldBindJSON(req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
reqJson, _ := json.Marshal(req)
fmt.Println("reqJson:", string(reqJson))
//data, _ := c.Get(jwtauth.JwtPayloadKey)
//mapClaims := data.(jwtauth.MapClaims)
//sysUid := float64(0)
//if v, ok := mapClaims["identity"]; ok {
// sysUid = v.(float64)
//}
//fmt.Println("sysUid:", sysUid)
//var suser models.SysUser
//err := orm.Eloquent.Table("sys_user").Where("user_id", fmt.Sprintf("%.0f", sysUid)).Find(&suser).Error
//if err != nil {
//
//}
list, count, _, err := req.List(0, c)
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
ret := map[string]interface{}{
"total": count,
"list": list,
"pageIndex": req.Page,
"pageSize": req.PageSize,
}
app.OK(c, ret, "")
}
func OrderInfo(c *gin.Context) {
req := struct {
OrderId uint32 `json:"order_id"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
order := &models.Order{}
order.ID = req.OrderId
ret, err := order.Info()
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
app.OK(c, ret, "")
}
func DeliverGoods(c *gin.Context) {
m := models.Order{}
if c.ShouldBindJSON(&m) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
if m.DeliverShopperCode != "" && !models.CheckCode(m.DeliverShopperCode) {
app.Error(c, http.StatusBadRequest, errors.New("deliver_shopper_code err"), "店员码错误")
return
}
// 更新卡的状态
if len(m.GameCardSerialNumbers) == 0 {
logger.Errorf("err:")
msg := "发货卡编码不能为空"
app.Error(c, http.StatusInternalServerError, errors.New("GameCardSerialNumber null"), msg)
return
}
err, msg := m.Deliver()
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
if msg == "" {
msg = "更新失败"
}
app.Error(c, http.StatusInternalServerError, err, msg)
return
}
app.OK(c, nil, "")
}
func RevertGoods(c *gin.Context) {
order := &models.Order{}
//req := struct {
// SerialNumber string `json:"serial_number" ` // 编号
//}{}
if c.ShouldBindJSON(order) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
if order.RevertShopperCode != "" && !models.CheckCode(order.RevertShopperCode) {
app.Error(c, http.StatusBadRequest, errors.New("order revert shopper code err"), "店员码错误")
return
}
err := order.Revert()
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, err.Error())
return
}
app.OK(c, nil, "")
}
func ExpressCompanyList(c *gin.Context) {
company := &models.ExpressCompany{}
list, err := company.List()
if err != nil {
logger.Error("err:", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
app.OK(c, list, "")
return
}
func OrderDel(c *gin.Context) {
req := struct {
OrderId uint32 `json:"order_id"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
order := &models.Order{}
order.ID = req.OrderId
err := order.Del()
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
app.OK(c, nil, "")
}
func OrderRefund(c *gin.Context) {
req := struct {
OrderId uint32 `json:"order_id"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
order := &models.Order{}
order.ID = req.OrderId
err := order.Refund()
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
app.OK(c, nil, "")
}
func ExpressNoList(c *gin.Context) {
req := struct {
ExpressNo string `json:"express_no"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
info := models.ExpressNoInfo{
Store: new(models.Store),
}
// 还卡 共享卡 问题卡
var orderCard models.OrderCard
err := orm.Eloquent.Table("order_card").Where("revert_express_no=?", req.ExpressNo).Find(&orderCard).Error
if orderCard.RevertExpressNo == req.ExpressNo {
info.StoreId = uint32(orderCard.StoreId)
info.ExpressNo = orderCard.RevertExpressNo
info.ExpressCompanyNo = orderCard.RevertExpressCompanyNo
info.ExpressCompany = orderCard.RevertExpressCompany
info.OperationType = models.OperationTypeRevertRentCard
info.CorrelationId = orderCard.OrderId
info.SetStore()
app.OK(c, info, "")
return
}
var shareCardBill models.UserShareCardBill
err = orm.Eloquent.Table("user_share_card_bill").Where("express_no=?", req.ExpressNo).Find(&shareCardBill).Error
if shareCardBill.ExpressNo == req.ExpressNo {
info.StoreId = shareCardBill.StoreId
info.ExpressNo = shareCardBill.ExpressNo
info.ExpressCompanyNo = shareCardBill.ExpressCompanyNo
info.ExpressCompany = shareCardBill.ExpressCompany
info.OperationType = models.OperationTypeUserShareCard
info.CorrelationId = shareCardBill.ID
info.SetStore()
app.OK(c, info, "")
return
}
var cardIssue models.CardIssueFeedback
err = orm.Eloquent.Table("card_issue_feedback").Where("express_no=?", req.ExpressNo).Find(&cardIssue).Error
if cardIssue.ExpressNo == req.ExpressNo {
info.StoreId = cardIssue.StoreId
info.ExpressNo = cardIssue.ExpressNo
info.ExpressCompanyNo = cardIssue.ExpressCompanyNo
info.ExpressCompany = cardIssue.ExpressCompany
info.OperationType = models.OperationTypeIssueCard
info.CorrelationId = cardIssue.ID
info.SetStore()
app.OK(c, info, "")
return
}
//if info.OperationType == "" {
//
//}
logger.Errorf("express no err:")
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
//app.OK(c, nil, "")
}
func FundRecordList(c *gin.Context) {
req := &models.FundRecordListReq{}
if c.ShouldBindJSON(req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
list, count, err := req.List()
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
ret := map[string]interface{}{
"total": count,
"list": list,
"pageIndex": req.Page,
"pageSize": req.PageSize,
}
app.OK(c, ret, "")
}
// OrderListExport 导出订单列表
// @Summary 导出订单列表
// @Tags 订单管理
// @Produce json
// @Accept json
// @Param request body models.OrderListReq true "导出订单列表模型"
// @Success 200 {object} app.Response "{"code": 200, "data": { "export_url": "" }}"
// @Router /api/v1/order/list_export [post]
func OrderListExport(c *gin.Context) {
req := &models.OrderListReq{}
if c.ShouldBindJSON(req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
reqJson, _ := json.Marshal(req)
fmt.Println("reqJson:", string(reqJson))
_, _, filePath, err := req.List(1, c)
if err != nil {
logger.Errorf("OrderListExport err:", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, "导出失败")
return
}
ret := map[string]interface{}{
"export_url": filePath,
}
app.OK(c, ret, "")
}