// +----------------------------------------------------------------------
// | ShopSuite商城系统 [ 赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | 版权所有 随商信息技术(上海)有限公司
// +----------------------------------------------------------------------
// | 未获商业授权前,不得将本软件用于商业用途。禁止整体或任何部分基础上以发展任何派生版本、
// | 修改版本或第三方版本用于重新分发。
// +----------------------------------------------------------------------
// | 官方网站: https://www.shopsuite.cn https://www.golershop.cn
// +----------------------------------------------------------------------
// | 版权和免责声明:
// | 本公司对该软件产品拥有知识产权(包括但不限于商标权、专利权、著作权、商业秘密等)
// | 均受到相关法律法规的保护,任何个人、组织和单位不得在未经本团队书面授权的情况下对所授权
// | 软件框架产品本身申请相关的知识产权,禁止用于任何违法、侵害他人合法权益等恶意的行为,禁
// | 止用于任何违反我国法律法规的一切项目研发,任何个人、组织和单位用于项目研发而产生的任何
// | 意外、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其造成的损失 (包括但不限于直接、间接、
// | 附带或衍生的损失等),本团队不承担任何法律责任,本软件框架只能用于公司和个人内部的
// | 法律所允许的合法合规的软件产品研发,详细见https://www.golershop.cn/policy
// +----------------------------------------------------------------------
package trade
import (
"context"
"errors"
"fmt"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/grpool"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/text/gstr"
gconv "github.com/gogf/gf/v2/util/gconv"
"github.com/mallsuite/gocore/core/ml"
"github.com/shopspring/decimal"
"golershop.cn/internal/consts"
"golershop.cn/internal/dao"
"golershop.cn/internal/dao/global"
"golershop.cn/internal/model"
"golershop.cn/internal/model/do"
"golershop.cn/internal/model/entity"
"golershop.cn/internal/service"
"golershop.cn/utility/array"
"math"
"sync"
"time"
)
type sOrder struct{}
func init() {
service.RegisterOrder(NewOrder())
}
func NewOrder() *sOrder {
return &sOrder{}
}
// Detail 读取订单
func (s *sOrder) Detail(ctx context.Context, orderId any) (detail *model.OrderVo, err error) {
detail = &model.OrderVo{}
//信息表
orderInfo, err := dao.OrderInfo.Get(ctx, orderId)
if err != nil {
return nil, err
}
if err := gconv.Scan(orderInfo, detail); err != nil {
return nil, err
}
//详情表
orderData, err := dao.OrderData.Get(ctx, orderId)
if err != nil {
return nil, err
}
if err := gconv.Scan(orderData, &detail.OrderData); err != nil {
return nil, err
}
//基础表
orderBase, err := dao.OrderBase.Get(ctx, orderId)
if err != nil {
return nil, err
}
detail.OrderNumber = orderBase.OrderNumber
detail.OrderTime = orderBase.OrderTime
detail.OrderProductAmount = orderBase.OrderProductAmount
detail.OrderPaymentAmount = orderBase.OrderPaymentAmount
detail.CurrencyId = orderBase.CurrencyId
detail.CurrencySymbolLeft = orderBase.CurrencySymbolLeft
detail.StoreName = orderBase.StoreName
detail.UserNickname = orderBase.UserNickname
//读取订单商品
orderItems, err := dao.OrderItem.Find(ctx, &do.OrderItemListInput{Where: do.OrderItem{OrderId: orderId}})
if err != nil {
return nil, err
}
gconv.Scan(orderItems, &detail.Items)
if !g.IsEmpty(detail.Items) {
for i := range detail.Items {
detail.Items[i].ProductItemName = fmt.Sprintf("%s %s",
detail.Items[i].ProductName,
gstr.Replace(detail.Items[i].ItemName, ",", " "),
)
}
}
//售后服务
returnItemList, err := dao.OrderReturnItem.Find(ctx, &do.OrderReturnItemListInput{Where: do.OrderReturnItem{OrderId: orderId, ReturnStateId: consts.RETURN_PROCESS_CANCEL}})
if err != nil {
return nil, err
}
// 处理为map
orderReturnItemMap := make(map[uint64][]string)
for _, item := range returnItemList {
if _, ok := orderReturnItemMap[item.OrderItemId]; !ok {
orderReturnItemMap[item.OrderItemId] = []string{}
}
orderReturnItemMap[item.OrderItemId] = append(orderReturnItemMap[item.OrderItemId], item.ReturnId)
}
for i := range detail.Items {
// 是否可以退货
detail.Items[i].IfReturn = detail.Items[i].OrderItemQuantity > detail.Items[i].OrderItemReturnNum && s.ifReturn(orderInfo.OrderStateId, orderInfo.OrderIsPaid)
returnIds := orderReturnItemMap[detail.Items[i].OrderItemId]
if g.IsEmpty(returnIds) {
returnIds = []string{}
}
detail.Items[i].ReturnIds = returnIds
}
//商品库存
itemIds := array.Column(orderItems, "item_id")
productItems, err := service.ProductItem().Gets(ctx, itemIds)
if err != nil {
return nil, err
}
for _, it := range productItems {
i := &entity.WarehouseItem{}
gconv.Scan(it, i)
i.WarehouseId = 0
i.ItemId = it.ItemId
i.WarehouseItemQuantity = it.ItemQuantity
detail.WarehouseItems = append(detail.WarehouseItems, i)
}
//配送地址
orderDeliveryAddress, err := dao.OrderDeliveryAddress.Get(ctx, orderId)
if err != nil {
return nil, err
}
detail.Delivery = orderDeliveryAddress
//订单日志
//orderStateLogItems, err := dao.OrderStateLog.Find(ctx, &do.OrderStateLogListInput{Where: do.OrderStateLog{OrderId: orderId}})
//if err != nil {
// return nil, err
//}
//
//detail.LogItems = orderStateLogItems
//物流记录
orderLogistics, err := dao.OrderLogistics.Find(ctx, &do.OrderLogisticsListInput{Where: do.OrderLogistics{OrderId: orderId}})
if err != nil {
return nil, err
}
detail.Logistics = orderLogistics
//StockBill
stockBill, err := service.StockBill().FindDetail(ctx, &do.StockBillListInput{Where: do.StockBill{OrderId: orderId}})
if err != nil {
return nil, err
}
detail.StockBill = stockBill
//consumeRecord
consumeRecord, err := dao.ConsumeRecord.Find(ctx, &do.ConsumeRecordListInput{Where: do.ConsumeRecord{OrderId: orderId, TradeTypeId: consts.TRADE_TYPE_SALES}})
if err != nil {
return nil, err
}
detail.ConsumeRecord = consumeRecord
//ConsumeTrade
consumeTrades, err := dao.ConsumeTrade.Find(ctx, &do.ConsumeTradeListInput{Where: do.ConsumeTrade{OrderId: orderId}})
if err != nil {
return nil, err
}
if len(consumeTrades) > 0 {
detail.ConsumeTrade = consumeTrades[0]
}
// 订单倒计时
showCancelTime := service.ConfigBase().GetBool(ctx, "show_cancel_time", false)
orderAutocancelTime := service.ConfigBase().GetFloat(ctx, "order_autocancel_time", 0.0)
if showCancelTime && orderAutocancelTime > 0 && detail.OrderStateId == consts.ORDER_STATE_WAIT_PAY {
orderTime := detail.OrderTime
orderTime = orderTime.Add(time.Duration(int(orderAutocancelTime*60*60)) * time.Second)
remainPayTime := (orderTime.Unix() - time.Now().Unix())
detail.RemainPayTime = remainPayTime
}
return detail, nil
}
// List 订单搜索查询列表
func (s *sOrder) List(ctx context.Context, in *do.OrderInfoListInput) (out *model.OrderListOutput, err error) {
//修正 待配货和代发货 为同一种状态查询
if len(in.BaseList.WhereExt) > 0 {
if !g.IsEmpty(in.Where.OrderStateId) {
if in.Where.OrderStateId == consts.ORDER_STATE_WAIT_SHIPPING || in.Where.OrderStateId == consts.ORDER_STATE_PICKING {
in.Where.OrderStateId = []uint{consts.ORDER_STATE_PICKING, consts.ORDER_STATE_WAIT_SHIPPING}
}
}
for _, c := range in.BaseList.WhereExt {
if c.Column == "OrderStateId" && c.Symbol == ml.EQ {
if gconv.Uint(c.Val) == consts.ORDER_STATE_WAIT_SHIPPING || gconv.Uint(c.Val) == consts.ORDER_STATE_PICKING {
c.Symbol = ml.IN
c.Val = []uint{consts.ORDER_STATE_PICKING, consts.ORDER_STATE_WAIT_SHIPPING}
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于Go + Golang + Uniapp + Vue + ElementUi + Goframe框架的新零售社交电商系统(除...
共1178个文件
go:793个
png:112个
gif:96个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 43 浏览量
2024-12-22
09:02:11
上传
评论
收藏 8.59MB ZIP 举报
温馨提示
【资源说明】 基于Go + Golang + Uniapp + Vue + ElementUi + Goframe框架的新零售社交电商系统(除了go商城系统外,还有java商城系统及php商城系统),适用于企业新零售、批发商城、B2B商业系统、社交电商商城、分销商城、微信小程序商城,B2B商城、详细文档+优秀项目+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于Go + Golang + Uniapp + Vue + ElementUi + Goframe框架的新零售社交电商系统(除了go商城系统外,还有java商 (1178个子文件)
default.css 452KB
616.e79c62e9.css 411KB
ms-chunk-2f37883e.e14865de.css 290KB
bootstrap.css 262KB
qianyi-components.min.css 259KB
qianyi-skins.min.css 234KB
diy.css 166KB
qianyi-core.min.css 165KB
common.css 123KB
bootstrap.min.css 113KB
app.929855ce.css 70KB
layui.css 67KB
390.2283694f.css 61KB
qianyi-forms.min.css 56KB
596.507ac7cb.css 46KB
option2.css 31KB
default.min.css 22KB
dialog.css 21KB
layim.css 15KB
zerocons.css 14KB
layer.css 14KB
layui.mobile.css 10KB
layim.css 9KB
917.570840e6.css 8KB
laydate.css 7KB
zTreeStyle.css 6KB
page_layout.css 6KB
ms-chunk-721df1e4.c99b04f8.css 5KB
ms-chunk-44cb7fd0.eb38174f.css 4KB
loading.css 1KB
code.css 1KB
ms-chunk-cf8d6c9d.618004a2.css 86B
ms-chunk-8a3fc33b.124b309f.css 86B
Dockerfile 601B
remixicon.31d28485.f12fd1a0.eot 394KB
fontawesome-webfont.eot 162KB
iconfont.eot 37KB
glyphicons-halflings-regular.eot 20KB
fancybox_loading@2x.gif 14KB
59.gif 10KB
22.gif 10KB
24.gif 8KB
13.gif 7KB
16.gif 7KB
loading.gif 7KB
loading.gif 7KB
loading.gif 7KB
fancybox_loading.gif 6KB
39.gif 6KB
64.gif 6KB
63.gif 6KB
50.gif 6KB
loading-0.gif 6KB
4.gif 6KB
zTreeStandard.gif 5KB
1.gif 5KB
42.gif 5KB
71.gif 5KB
21.gif 5KB
20.gif 5KB
29.gif 5KB
70.gif 4KB
5.gif 4KB
17.gif 4KB
27.gif 4KB
9.gif 4KB
44.gif 4KB
11.gif 4KB
8.gif 4KB
3.gif 4KB
23.gif 4KB
34.gif 4KB
41.gif 4KB
38.gif 4KB
65.gif 3KB
32.gif 3KB
45.gif 3KB
7.gif 3KB
12.gif 3KB
26.gif 3KB
60.gif 3KB
2.gif 3KB
40.gif 3KB
25.gif 3KB
19.gif 3KB
66.gif 3KB
18.gif 3KB
46.gif 3KB
10.gif 3KB
28.gif 3KB
51.gif 3KB
57.gif 3KB
67.gif 3KB
0.gif 3KB
48.gif 3KB
43.gif 3KB
30.gif 2KB
61.gif 2KB
33.gif 2KB
69.gif 2KB
共 1178 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
Yuki-^_^
- 粉丝: 3101
- 资源: 2952
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功