172 lines
5.4 KiB
Go
172 lines
5.4 KiB
Go
package q_bida
|
||
|
||
import (
|
||
"errors"
|
||
"fmt"
|
||
bida "git.rosy.net.cn/baseapi/platformapi/q_bida"
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||
"git.rosy.net.cn/jx-callback/business/model"
|
||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||
"git.rosy.net.cn/jx-callback/globals/api"
|
||
"time"
|
||
)
|
||
|
||
// QueryExpressPrice 查询配送价格,获取所有快递价格
|
||
func QueryExpressPrice(param *bida.GetExpressPriceReq) (map[string]*bida.GetExpressPriceRes, error) {
|
||
if param.Weight <= 0 {
|
||
return nil, errors.New("物品重量必须大于0")
|
||
}
|
||
|
||
result := make(map[string]*bida.GetExpressPriceRes, 0)
|
||
if param.Type == 0 {
|
||
// 渠道费每公斤加价两毛
|
||
for i := 1; i <= 14; i++ {
|
||
param.Type = i
|
||
fee, err := api.QBiDaAPI.GetExpressPrice(param)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if fee.Code != 0 {
|
||
result[fmt.Sprintf("%d", i)] = fee
|
||
continue
|
||
}
|
||
if fee.Data.ChannelFee != 0 {
|
||
addFee := fee.Data.ChannelFee + utils.Int2Float64(param.Width*2)
|
||
fee.Data.ChannelFee = addFee
|
||
result[fmt.Sprintf("%d", i)] = fee
|
||
}
|
||
}
|
||
} else {
|
||
fee, err := api.QBiDaAPI.GetExpressPrice(param)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if fee.Code != 0 {
|
||
// result[fmt.Sprintf("%d", param.Type)] = fee
|
||
return nil, errors.New(fee.Msg)
|
||
}
|
||
if fee.Data.ChannelFee != 0 {
|
||
addFee := fee.Data.ChannelFee + utils.Int2Float64(param.Width*2)
|
||
fee.Data.ChannelFee = addFee
|
||
result[fmt.Sprintf("%d", param.Type)] = fee
|
||
}
|
||
}
|
||
|
||
return result, nil
|
||
}
|
||
|
||
// CreateWayOrder 创建快递订单
|
||
func CreateWayOrder(ctx *jxcontext.Context, param *model.MakeOrderParamReq, userId string) error {
|
||
// 检查价格
|
||
reallyCannelleFee := param.ChannelFee
|
||
if err := checkWayFeeIsTrue(param); err != nil {
|
||
return err
|
||
}
|
||
|
||
// 创建三方订单
|
||
otherId, err := createOtherOrder(param)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
|
||
// 第三方数据创建成功,则创建本地数据
|
||
vendorOrder := &model.UserVendorOrder{
|
||
UserId: userId,
|
||
LocalWayBill: utils.Int64ToStr(time.Now().Unix()) + userId[:4], // 当前时间秒数加用户ID前四位
|
||
OtherWayBill: otherId,
|
||
PromiseTimeType: param.PromiseTimeType,
|
||
DeliveryType: param.DeliveryType,
|
||
Goods: param.Goods,
|
||
GuaranteeValueAmount: param.GuaranteeValueAmount,
|
||
Weight: param.Weight,
|
||
Length: param.Length,
|
||
Height: param.Height,
|
||
Width: param.Width,
|
||
OrderSendTime: param.OrderSendTime,
|
||
PackageNum: param.PackageNum,
|
||
ReceiveAddressID: param.ReceiveAddressId,
|
||
Remark: param.Remark,
|
||
SenderAddressID: param.SenderAddressId,
|
||
ThirdPlatform: param.ThirdPlatform,
|
||
Type: param.Type,
|
||
ReallyChannelFee: reallyCannelleFee,
|
||
ChannelFee: param.ChannelFee,
|
||
ServiceCharge: param.ServiceCharge,
|
||
GuarantFee: param.GuarantFee,
|
||
OriginalFee: param.OriginalFee,
|
||
Bulk: param.Bulk,
|
||
Increment: param.Increment,
|
||
ChannelType: param.ChannelType,
|
||
OrderStatus: model.YES, // 创建
|
||
Img: param.Images,
|
||
IsForward: model.YES,
|
||
}
|
||
dao.WrapAddIDCULEntity(vendorOrder, ctx.GetUserName())
|
||
return dao.CreateEntity(dao.GetDB(), vendorOrder)
|
||
}
|
||
|
||
// CancelWayOrder 取消运单 todo
|
||
func CancelWayOrder(param *bida.CancelOrderReq) error {
|
||
if err := api.QBiDaAPI.CancelOrder(param); err != nil {
|
||
return err
|
||
}
|
||
|
||
// 发起退款
|
||
// 修改本地订单状态
|
||
return nil
|
||
}
|
||
|
||
// QueryOrderDetail 获取订单详细信息
|
||
func QueryOrderDetail(typeCode int, orderNo string) (*bida.OrderDetail, error) {
|
||
detail, err := api.QBiDaAPI.GetOrderDetail(&bida.GetOrderDetailReq{
|
||
Type: typeCode,
|
||
OrderNo: orderNo,
|
||
})
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
// 本地查询获取真是支付快递费用
|
||
sql := `SELECT * FROM user_vendor_order a WHERE a.other_way_bill = ? and a.type = ? `
|
||
data := &model.UserVendorOrder{}
|
||
param := []interface{}{orderNo, typeCode}
|
||
if err := dao.GetRow(dao.GetDB(), data, sql, param); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
detail.ExpressFee = utils.Float64ToStr(data.ChannelFee)
|
||
return detail, nil
|
||
}
|
||
|
||
// QueryUserOrderList 查询用户订单列表
|
||
func QueryUserOrderList(userId string, expressType, orderStatus int, pageNum, pageSize int) {
|
||
sql := `
|
||
SELECT
|
||
a.type,a.other_way_bill,a.local_way_bill,a.user_id,a.receive_address_id,a.sender_address_id,
|
||
a.create_at,a.order_status,a.channel_fee,add.consignee_name send_user_name,add2.consignee_name receive_user_name,
|
||
city.col_areaName sender_address,city2.col_areaName receive_address
|
||
FROM user_vendor_order a
|
||
LEFT JOIN user_delivery_address add ON a.sender_address_id = add.id
|
||
LEFT JOIN user_delivery_address add2 ON a.receive_address_id = add2.id
|
||
LEFT JOIN jde_city city ON city.clo_tencentAddressCode = add.district_code
|
||
LEFT JOIN jde_city city2 ON city2.clo_tencentAddressCode = add2.district_code
|
||
WHERE a.user_id = ?
|
||
`
|
||
param := make([]interface{}, 0, 0)
|
||
param = append(param, userId)
|
||
if expressType != 0 {
|
||
sql = sql + ` a.type = ? `
|
||
param = append(param, expressType)
|
||
}
|
||
if orderStatus != 0 {
|
||
sql = sql + ` a.order_status = ? `
|
||
param = append(param, orderStatus)
|
||
}
|
||
sql = sql + ` ORDER BY a.create_at DESC LIMIT ? OFFSET ? `
|
||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||
param = append(param, pageSize, (pageNum-1)*pageSize)
|
||
|
||
}
|