1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package controller
- import (
- . "app.yhyue.com/moapp/jybase/api"
- "app.yhyue.com/moapp/jybase/common"
- "context"
- "fmt"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/net/ghttp"
- "github.com/gogf/gf/v2/util/gconv"
- "github.com/pkg/errors"
- "jyOrderManager/internal/model"
- "strings"
- )
- // OrderSurplusPrice 订单详情
- func OrderSurplusPrice(r *ghttp.Request) {
- rData, err := func() (interface{}, error) {
- var param model.OrdersEditBatchReturn
- err := gconv.Struct(r.GetBody(), ¶m)
- if err != nil || len(param.OrderArr) == 0 {
- return nil, errors.Wrap(err, "数据校验异常")
- }
- if param.Type == 1 { // 查保证金信息
- return getOrderDepositMoney(r.Context(), param)
- }
- var price int
- for key, value := range param.OrderArr {
- orderData, _ := g.DB().GetOne(r.Context(), "SELECT (IFNULL(CASE WHEN a.is_backstage_order = 1 THEN a.pay_money ELSE a.order_money END, 0) - IFNULL(a.procedures_money, 0)) - (SELECT IFNULL(SUM(b.return_money), 0) FROM return_money_record b WHERE b.order_code = a.order_code AND b.state = 1) + (SELECT IFNULL(SUM(c.refund_money), 0) FROM refund_record c WHERE c.order_code = a.order_code) + (SELECT IFNULL(SUM(payMoney), 0) FROM moneyCorrection c WHERE c.orderCode = a.order_code) AS outstandingPayment, a.* FROM dataexport_order a WHERE a.id = ?", value["orderId"])
- if orderData.IsEmpty() {
- continue
- }
- param.OrderArr[key]["money"] = common.IntAll(orderData.Map()["outstandingPayment"])
- price += common.IntAll(orderData.Map()["outstandingPayment"])
- }
- return map[string]interface{}{"status": true, "orderArr": param.OrderArr, "price": price}, nil
- }()
- if err != nil {
- g.Log().Errorf(r.Context(), "订单详情异常 %v", err)
- }
- r.Response.WriteJson(NewResult(rData, err))
- }
- func getOrderDepositMoney(ctx context.Context, param model.OrdersEditBatchReturn) (interface{}, error) {
- args := []string{}
- values := []interface{}{}
- for i := 0; i < len(param.OrderArr); i++ {
- values = append(values, param.OrderArr[i]["orderId"])
- args = append(args, "?")
- }
- q := fmt.Sprintf("SELECT d.id, od.money-IFNULL( odp.pay_money,0) as money FROM order_deposit od LEFT JOIN dataexport_order d on od.order_code=d.order_code left join order_deposit_payment odp on odp.order_code=od.order_code and odp.is_del=0 WHERE d.id in (%s)", strings.Join(args, ","))
- data, err := g.DB().Query(ctx, q, values...)
- if err != nil || data.IsEmpty() {
- g.Log().Errorf(ctx, "查询保证金异常 %v", err)
- return nil, err
- }
- moneyMap := map[int]interface{}{}
- var price int
- dataList := data.List()
- for i := 0; i < len(dataList); i++ {
- price += common.IntAll(dataList[i]["money"])
- orderId := common.IntAll(dataList[i]["id"])
- moneyMap[orderId] = common.IntAll(dataList[i]["money"])
- }
- // 按原有顺序处理 因为要连三个表 所以一次性查的 但是这个接口原有的返回值是按传的顺序的,所以为了保持一致
- for key, value := range param.OrderArr {
- orderId := int(gconv.Int64(value["orderId"]))
- if moneyTmp, ok := moneyMap[orderId]; ok {
- param.OrderArr[key]["money"] = moneyTmp
- } else {
- param.OrderArr[key]["money"] = 0
- }
- }
- return map[string]interface{}{"status": true, "orderArr": param.OrderArr, "price": price}, nil
- }
|