Răsfoiți Sursa

Merge remote-tracking branch 'origin/main'

wkyuer 3 luni în urmă
părinte
comite
7b930ef80a

+ 40 - 10
internal/logic/order/list.go

@@ -54,15 +54,15 @@ func List(ctx context.Context, param model.OrderListParams) (map[string]interfac
 		orderSql = append(orderSql, fmt.Sprintf("a.audit_status in (%s)", strings.Join(statusArr, ",")))
 	}
 
-	if len(param.OrderStatus) > 0 {
+	if len(param.OrderStatus) > 0 && len(param.OrderStatus) != 3 {
 		orderSql = append(orderSql, fmt.Sprintf("a.order_status in (%s)", strings.Join(param.OrderStatus, ",")))
 	}
 
-	if len(param.ReturnStatus) > 0 {
+	if len(param.ReturnStatus) > 0 && len(param.ReturnStatus) != 3 {
 		orderSql = append(orderSql, fmt.Sprintf("a.return_status in (%s)", strings.Join(param.ReturnStatus, ",")))
 	}
 
-	if len(param.RefundStatus) > 0 {
+	if len(param.RefundStatus) > 0 && len(param.RefundStatus) != 3 {
 		orderSql = append(orderSql, fmt.Sprintf("a.refund_status in (%s)", strings.Join(param.RefundStatus, ",")))
 	}
 
@@ -99,7 +99,7 @@ func List(ctx context.Context, param model.OrderListParams) (map[string]interfac
 		}
 	}
 
-	if len(param.InvoiceType) == 1 {
+	if len(param.ContractType) == 1 {
 		var statusArr []string
 		for _, s := range param.ContractType {
 			switch s {
@@ -111,14 +111,14 @@ func List(ctx context.Context, param model.OrderListParams) (map[string]interfac
 		}
 		orderSql = append(orderSql, fmt.Sprintf("(%s)", strings.Join(statusArr, " or ")))
 	}
-	if param.ProductType != "" {
+	if len(param.ProductType) > 0 {
 		//orderSql = append(orderSql, fmt.Sprintf(" a.order_code in (SELECT DISTINCT(order_code)  FROM jy_order_detail WHERE product_type in ('%s') )", strings.ReplaceAll(param.ProductType, ",", "','")))
 		orderSql = append(orderSql, fmt.Sprintf(` a.order_code in (SELECT DISTINCT(jyd.order_code)  FROM jy_order_detail jyd 
 inner JOIN dataexport_order dor on jyd.order_code = dor.order_code
 LEFT JOIN 
 (    SELECT ordercode, ent_userId FROM order_sale_record WHERE ent_userId = '%d' and state in (1,2) GROUP BY ordercode,ent_userId
 )osr on osr.ordercode = jyd.order_code
-WHERE (dor.salesperson_entUserId ='%d' or osr.ent_userId ='%d') and jyd.product_type in ('%s')) `, adminId, adminId, adminId, strings.ReplaceAll(param.ProductType, ",", "','")))
+WHERE (dor.salesperson_entUserId ='%d' or osr.ent_userId ='%d') and jyd.product_type in ('%s')) `, adminId, adminId, adminId, strings.Join(param.ProductType, "','")))
 	}
 	if param.OrderTimeStart != "" {
 		orderSql = append(orderSql, fmt.Sprintf("a.create_time>='%s'", param.OrderTimeStart))
@@ -176,8 +176,12 @@ LEFT JOIN (
 ) g ON a.order_code = g.orderCode   
 WHERE 
     %s`
+	//列表
 	sql := fmt.Sprintf(sqlWhere, " a.id,\n  a.order_code,\n  a.create_time,\n  a.company_name,\n    a.user_phone,\n    a.user_nickname,\n    a.buy_subject,\n    a.audit_status,\n    a.order_status,\n    a.pay_money - IFNULL(g.orderMoney, 0) as pay_money,\n    a.commission,\n    a.return_status,\n    IFNULL(c.return_money, 0) as return_money,\n    IFNULL(b.invoiced_amount, 0) as invoiced_amount,\n    a.refund_status,\n    IFNULL(d.refund_money, 0) as refund_money,\n    f.ent_userId,\n    e.contract_status,\n    e.contract_time,\n    e.contract_archive_status,\n    e.contract_archive_time,\n    (SELECT id FROM jy_order_detail where order_code = a.order_code order by final_price desc, id desc LIMIT 1) as order_detail_id  ", adminId, strings.Join(orderSql, " and "))
+	//数量
 	sqlCount := fmt.Sprintf(sqlWhere, " count(1) ", adminId, strings.Join(orderSql, " and "))
+	//合同总金额
+	sqlSum := fmt.Sprintf(sqlWhere, "  sum(pay_money) as pay_money_sum  ", adminId, strings.Join(orderSql, " and "))
 
 	log.Println("list count sql :", sqlCount)
 	log.Println("list sql :", sql)
@@ -186,12 +190,33 @@ WHERE
 		log.Println("count err:=", err.Error())
 		return nil, err
 	}
-	list, err := g.DB().Query(ctx, fmt.Sprintf(`%s order by a.create_time desc LIMIT %d,%d`, sql, (param.Page-1)*param.Size, param.Size))
+	var sortClassify string
+	switch param.SortClassify {
+	case 1:
+		sortClassify = " a.pay_money "
+	case 2:
+		sortClassify = " return_money "
+	case 3:
+		sortClassify = " invoiced_amount "
+	case 4:
+		sortClassify = " refund_money "
+	case 5:
+		sortClassify = " e.contract_time "
+	case 6:
+		sortClassify = " e.contract_archive_time "
+	default:
+		sortClassify = " a.create_time "
+	}
+
+	list, err := g.DB().Query(ctx, fmt.Sprintf(`%s order by %s %v LIMIT %d,%d`, sql, sortClassify, common.If(param.SortType == 1, " asc ", " desc "), (param.Page-1)*param.Size, param.Size))
 	if err != nil {
 		log.Println("list err:=", err.Error())
 		return nil, err
 	}
-	var listArr []map[string]interface{}
+	var (
+		listArr     []map[string]interface{}
+		payMoneySum int
+	)
 	for _, m := range list.List() {
 		jyOrderDetail, _ := g.DB().GetOne(ctx, fmt.Sprintf(`SELECT * FROM jy_order_detail WHERE id = %d`, gconv.Int64(m["order_detail_id"])))
 		if !jyOrderDetail.IsEmpty() {
@@ -227,8 +252,13 @@ WHERE
 		}
 		listArr = append(listArr, m)
 	}
+	sumData, _ := g.DB().GetOne(ctx, sqlSum)
+	if !sumData.IsEmpty() {
+		payMoneySum = gconv.Int(sumData.Map()["pay_money_sum"])
+	}
 	return map[string]interface{}{
-		"count": count,
-		"list":  listArr,
+		"count":       count,
+		"list":        listArr,
+		"payMoneySum": payMoneySum,
 	}, nil
 }

+ 1 - 1
internal/logic/user/getService.go

@@ -71,7 +71,7 @@ WHERE status = 1 and is_service_open = 0 and user_id = '%s' and product_type lik
 					}
 					orderData, _ := g.DB().Query(ctx, fmt.Sprintf(`SELECT   a.id,a.service_type,a.order_code,b.create_time   FROM jy_order_detail  a
 INNER JOIN dataexport_order b on a.order_code = b.order_code
-WHERE a.status = 1 %s and a.user_id = '%s' and a.product_type like '%s' ORDER BY b.create_time desc `, whereEntTime, userId, common.If(param.ProductType == "VIP订阅", "%VIP订阅%", "%大会员%")))
+WHERE a.status = 1 %s and b.user_phone = '%s' and a.product_type like '%s' ORDER BY b.create_time desc `, whereEntTime, param.Phone, common.If(param.ProductType == "VIP订阅", "%VIP订阅%", "%大会员%")))
 					if !orderData.IsEmpty() {
 						for _, m2 := range orderData.List() {
 							if linkedId == 0 {

+ 3 - 1
internal/model/orderParams.go

@@ -120,10 +120,12 @@ type (
 		RefundStatus   []string `json:"refundStatus,omitempty"`   //退款状态 1-全额退款   2-部分退款  0-未退款
 		InvoiceType    []int    `json:"invoiceType,omitempty"`    //发票开具方
 		ContractType   []int    `json:"contractType,omitempty"`   //协议状态
-		ProductType    string   `json:"productType,omitempty"`    //产品类型
+		ProductType    []string `json:"productType,omitempty"`    //产品类型
 		OrderTimeStart string   `json:"orderTimeStart,omitempty"` //订单其实日期
 		OrderTimeEnd   string   `json:"orderTimeEmd,omitempty"`   //订单其实日期
 		ServiceType    int      `json:"service_type,omitempty"`   //类型  0 全部  1 新购  2 续签 3 升级 4试用
+		SortType       int      `json:"sort_type,omitempty"`      //类型  0 倒叙 1 正序
+		SortClassify   int      `json:"sort_classify,omitempty"`  //类型  1 合同金额  2 已回款金额  3 已开票金额、 4 已退款金额 5 协议签订时间 6协议归档时间、0 创建时间
 
 		Page int `json:"page"` //页
 		Size int `json:"size"` //数