diff --git a/business/api/control.go b/business/api/control.go index a5dc3fd..bd3273e 100644 --- a/business/api/control.go +++ b/business/api/control.go @@ -34,6 +34,7 @@ func (p DefParty) RegisterList() []web_iris.Party { p.orderCancel(), p.orderCreatePreCheck(), p.orderMarkRecord(), + p.orderMarkRecordInfo(), //宠物 p.petList(), p.petInfo(), diff --git a/business/api/init.go b/business/api/init.go index 82cffc4..e5ac943 100644 --- a/business/api/init.go +++ b/business/api/init.go @@ -4,6 +4,7 @@ import ( "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/context" "go.uber.org/zap" + "pet-house.com/business/models" "pet-house.com/business/utils" "pet-house.com/core/server/database" "pet-house.com/core/server/web/web_iris" @@ -26,31 +27,32 @@ var frontExcludes = [...]string{ func ModuleInit() { utils.WechatInit() _err := database.Instance().AutoMigrate( - //&models.User{}, - //&models.Pet{}, - //&models.PetBaseInfo{}, - //&models.ServiceAddr{}, - //&models.UserServiceAddr{}, - //&models.Goods{}, - //&models.PetGoods{}, - //&models.SystemConfig{}, - //&models.OrderMain{}, - //&models.OrderSub{}, - //&models.OrderDetail{}, - //&models.ServiceCar{}, - //&models.CarOrder{}, - //&models.ServiceCarUser{}, - //&models.ServiceUserMark{}, - //&models.ServiceUserMarkRecord{}, - //&models.ReserveTimeFilter{}, - //&models.OrderServiceRecord{}, - //&models.AddrServiceTime{}, - //&models.UserAmountRecord{}, - //&models.Coupons{}, - //&models.UserCoupons{}, - //&models.RechargeInfo{}, - //&models.PayOrder{}, - //&models.ServiceCarLocation{}, + //&models.User{}, + //&models.Pet{}, + //&models.PetBaseInfo{}, + //&models.ServiceAddr{}, + //&models.UserServiceAddr{}, + //&models.Goods{}, + //&models.PetGoods{}, + //&models.SystemConfig{}, + //&models.OrderMain{}, + //&models.OrderSub{}, + //&models.OrderDetail{}, + //&models.ServiceCar{}, + //&models.CarOrder{}, + //&models.ServiceCarUser{}, + //&models.ServiceUserMark{}, + //&models.ServiceUserMarkRecord{}, + //&models.ReserveTimeFilter{}, + //&models.OrderServiceRecord{}, + //&models.AddrServiceTime{}, + //&models.UserAmountRecord{}, + //&models.Coupons{}, + //&models.UserCoupons{}, + //&models.RechargeInfo{}, + //&models.PayOrder{}, + &models.ServiceUserMarkRecord{}, + //&models.ServiceCarLocation{}, ) zap_server.ZAPLOG.Info("data init ", zap.Any("err", _err)) DataInit() diff --git a/business/api/order.go b/business/api/order.go index 2f19c35..752ef81 100644 --- a/business/api/order.go +++ b/business/api/order.go @@ -177,12 +177,12 @@ func (p DefParty) orderCreate() web_iris.Party { } } - var payOrder *models.PayOrder + /*var payOrder *models.PayOrder database.Instance().Model(&models.PayOrder{}).Where("order_id = ? and order_status = 0", orderCreateRequest.PayOrderId).Find(&payOrder) if payOrder.Id > 0 { OrderNotPayError.DefFail(ctx, orderCreateRequest, nil) return - } + }*/ //订单总金额 var orderTotalAmount = 0 @@ -511,6 +511,13 @@ func GetOrderDetail(orderId string) OrderDetail { if orderSub.PayType == 1 && orderSubR1.Coupons == nil { orderSubR1.PayAmount = strconv.Itoa(orderSubR1.TotalAmount) } + if len(orderSubR1.PayAmount) == 0 { + orderSubR1.PayAmount = "0" + } + if len(orderSubR1.PayAmount) == 0 { + orderSubR1.PayAmount = "0" + } + subOrderList = append(subOrderList, orderSubR1) } if discountTotalAmount > 0 { @@ -610,9 +617,9 @@ func (p DefParty) orderList() web_iris.Party { } var orderList []models.OrderMain if orderListRequest.Status == 0 { - database.Instance().Model(&models.OrderMain{}).Where("uid = ? and status = 1", headerBaseInfo.Uid).Offset((orderListRequest.PageNo - 1) * orderListRequest.PageSize).Limit(orderListRequest.PageSize).Order(clause.OrderByColumn{Column: clause.Column{Name: "create_time"}, Desc: true}).Find(&orderList) + database.Instance().Model(&models.OrderMain{}).Where("uid = ? and status = 1", headerBaseInfo.Uid).Order(clause.OrderByColumn{Column: clause.Column{Name: "create_time"}, Desc: true}).Offset((orderListRequest.PageNo - 1) * orderListRequest.PageSize).Limit(orderListRequest.PageSize).Find(&orderList) } else { - database.Instance().Model(&models.OrderMain{}).Where("uid = ? and order_status = ? and status = 1", headerBaseInfo.Uid, orderListRequest.Status).Offset((orderListRequest.PageNo - 1) * orderListRequest.PageSize).Limit(orderListRequest.PageSize).Order(clause.OrderByColumn{Column: clause.Column{Name: "create_time"}, Desc: true}).Find(&orderList) + database.Instance().Model(&models.OrderMain{}).Where("uid = ? and order_status = ? and status = 1", headerBaseInfo.Uid, orderListRequest.Status).Order(clause.OrderByColumn{Column: clause.Column{Name: "create_time"}, Desc: true}).Offset((orderListRequest.PageNo - 1) * orderListRequest.PageSize).Limit(orderListRequest.PageSize).Find(&orderList) } var orderDetails []OrderDetail for _, value := range orderList { @@ -1135,7 +1142,8 @@ func (p DefParty) orderMarkRecord() web_iris.Party { serviceUserMarkRecord4 := models.ServiceUserMarkRecord{ Uid: headerBaseInfo.Uid, OrderId: orderMarkRecordRequest.OrderId, - ServiceStar: orderMarkRecordRequest.Lab2, + ServiceStar: 0, + MarkContext: orderMarkRecordRequest.Message, ServiceLabels: "4", Status: 1, } @@ -1153,3 +1161,55 @@ func (p DefParty) orderMarkRecord() web_iris.Party { }) }} } + +type OrderMarkRecordInfoRequest struct { + OrderId string +} + +type OrderMarkRecordInfoResponse struct { + Lab1 int `json:"lab1"` + Lab2 int `json:"lab2"` + Lab3 int `json:"lab3"` + Message string `json:"message"` +} + +// 查看评价 +func (p DefParty) orderMarkRecordInfo() web_iris.Party { + return web_iris.Party{Prefix: p.Prefix, PartyFunc: func(index iris.Party) { + index.Post(OrderBase+"/orderMarkRecordInfo", func(ctx *context.Context) { + body, _ := io.ReadAll(ctx.Request().Body) + var orderMarkRecordRequest OrderMarkRecordInfoRequest + json.Unmarshal(body, &orderMarkRecordRequest) + if len(orderMarkRecordRequest.OrderId) == 0 { + OrderExistError.Fail(ctx, orderMarkRecordRequest) + return + } + + var serviceUserMarkRecord []models.ServiceUserMarkRecord + database.Instance().Model(&models.ServiceUserMarkRecord{}).Where("order_id = ?", orderMarkRecordRequest.OrderId).Find(&serviceUserMarkRecord) + var lab1, lab2, lab3 int + var lab4 string + for _, markRecord := range serviceUserMarkRecord { + if markRecord.ServiceLabels == "1" { + lab1 = markRecord.ServiceStar + } + if markRecord.ServiceLabels == "2" { + lab2 = markRecord.ServiceStar + } + if markRecord.ServiceLabels == "3" { + lab3 = markRecord.ServiceStar + } + if markRecord.ServiceLabels == "4" { + lab4 = markRecord.MarkContext + } + } + + Success(ctx, orderMarkRecordRequest, OrderMarkRecordInfoResponse{ + Lab1: lab1, + Lab2: lab2, + Lab3: lab3, + Message: lab4, + }) + }) + }} +} diff --git a/business/api/pay.go b/business/api/pay.go index 3e86c95..f14adc9 100644 --- a/business/api/pay.go +++ b/business/api/pay.go @@ -83,7 +83,9 @@ func (p DefParty) toPay() web_iris.Party { OrderId: orderId, OrderName: rechargeInfo.Name, OrderPrice: rechargeInfo.Price, + RechargeId: rechargeInfo.Id, PayId: "", + Uid: headerBaseInfo.Uid, } database.Instance().Model(&models.PayOrder{}).Create(&payOrder) Success(ctx, toPayRequest, ToPayResponse{Content: resp, PayOrderId: orderId, PayType: 0}) @@ -96,29 +98,28 @@ func (p DefParty) payNotify() web_iris.Party { return web_iris.Party{Prefix: p.Prefix, PartyFunc: func(index iris.Party) { index.Post(PayBase+"/payNotify", func(ctx *context.Context) { var cert = `-----BEGIN CERTIFICATE----- -MIIEKzCCAxOgAwIBAgIUfaIQgSDkxBhTe888BhqrEJzPiKkwDQYJKoZIhvcNAQEL +MIIEFDCCAvygAwIBAgIUXfrnoWdj8YwsOsPDsHsB8Exd/nQwDQYJKoZIhvcNAQEL BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg -Q0EwHhcNMjQwOTEwMDc0NDUzWhcNMjkwOTA5MDc0NDUzWjCBhDETMBEGA1UEAwwK -MTY4MjYzNzYxMjEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL -DCflroHms6LlrqDmiqTlrrblrqDnianmnI3liqHmnInpmZDlhazlj7gxCzAJBgNV -BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBALoZ/ZK7BdW1DKCzsqQnS9ElkWhv8Df4JidAupVoaaGa0Iz8cukj -8JgqzzmOA0fSief3z0OvOvmXQujNLXka38Y+8KB/K/BnqRYVGSvLWKwfdalSS+ca -JZUNLVQVv1zDrPVPb3JmoJMADPIq2sOfLqjmWPIxRcpa7sPeall5fMx07aVrpi2O -v1ueRUphIYNT6aV6KnPrRf/lcRwZxE0+l30l45sDNrd7l5tUsnJq/1OLP+kgidkp -ic6W1f3jrHZTwYakgShEUgkRsHeUjIQ0ZRYSsD4Mxn/bqdAxDSDWB6aWGwMrY1ku -bsPkE/AcXTpgpaC+2kQVhaYrWuly0w0T1jMCAwEAAaOBuTCBtjAJBgNVHRMEAjAA -MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2 -Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD -MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC -MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQC7 -Zgux40pvNohZx721rygjo0yUbx54docNS79Eh5J9ukSKMf0cTsORlAnrsCbSYnIo -MiqdPqccRYJUefUUuhOrKtuzaka4T+VSiaDTnZ07kB3I8xlvZtW32jHOstVPrJsB -fEg53sl5sfWHY+OfuEhwOkoH3v/Fs4nH4hQxjO8RW9tNXqLvTrl1JeEwV4bMZxCA -wCvoMPqn19WBFsaFb0kXF46oGeH5kId6oon0RCi+vXb8nSZ4oPXIJwxi9u/uy+wD -rVlHohjCK+bRbxGgaIcX5uMPK/M73mzuuLFCbIWN4CLz9yyZGKxNJBq4YuGe+jWa -gh1GheVuvTdcJ4ZGDhQT +Q0EwHhcNMjQwOTEwMDc0NDUyWhcNMjkwOTA5MDc0NDUyWjBuMRgwFgYDVQQDDA9U +ZW5wYXkuY29tIHNpZ24xEzARBgNVBAoMClRlbnBheS5jb20xHTAbBgNVBAsMFFRl +bnBheS5jb20gQ0EgQ2VudGVyMQswCQYDVQQGEwJDTjERMA8GA1UEBwwIU2hlblpo +ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnZzIY5opDpRJQU6KX +xtwVtyvq3u20pQgjUSYy4HxbEWbyTujrgEm+d6CrJrey0wLa9RBOwQMOuyYKbx3Y +t+WNxYnrkBDv5bbJtSTv6wA2/sINbFFSIP9GAiIAdGP/ii0BXjxG1pxGhrPDHW1Q +vSzJphyHO9s3gBDBNUW8BT/XxoLhxlOrbYNV+kv4Mr/oh9U+/KsNT1Ba1Pt8s4As +AQOJ7oE7xHzzUOgoFSyU+RvuYhIx6ZV0gTkZDmzu5cwj+FlCaxYFYnKPtxm5m9hj +eM39rTUl5jmsZXRQUyI9Ez1AkwVOjolbrJ3f5kpkpXoJvesfowOL53DfS/th+x3I +12QzAgMBAAGjgbkwgbYwCQYDVR0TBAIwADALBgNVHQ8EBAMCA/gwgZsGA1UdHwSB +kzCBkDCBjaCBiqCBh4aBhGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMv +aXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4 +RUJEMiZzZz1IQUNDNDcxQjY1NDIyRTEyQjI3QTlEMzNBODdBRDFDREY1OTI2RTE0 +MDM3MTANBgkqhkiG9w0BAQsFAAOCAQEAgL/Bfpy6kS6qCBZycuGvwdqYWU9exf1a +ZfbG8eop1ADUD5j6LjZcBrLyaVZDNZMRafqDiWI1OBypEtAxC3MScN3B0rxiJ3uQ +LHn/YOel6DKKJdMjANC36NpseC/PXZrdMMdCFLzQuc2FcG2ObOhRKcfTRnR/zdcU +Tw88WZqCW0thBcOXcQ9e7R2fIk+W4YqQ7C1O1/17qDpViPOTGWWnJBnUYpi5lTlX +JIhayMjkemIO27X1j1ZdtA314xZpPrO4uqrVFiLahoZ9y6az0RhNpPadYcT6D24G +2boO3JsJZ1X/MNiW78pfDUra7a+yEoH+JjiPNtaw9ztbtKtDcLIgWQ== -----END CERTIFICATE-----` wechatPayCert, err1 := utils2.LoadCertificate(cert) if err1 != nil { @@ -130,11 +131,39 @@ gh1GheVuvTdcJ4ZGDhQT handler := notify.NewNotifyHandler(utils.CONFIG.MchAPIv3Key, verifiers.NewSHA256WithRSAVerifier(certificateVisitor)) transaction := new(payments.Transaction) notifyReq, err := handler.ParseNotifyRequest(ctx, ctx.Request(), transaction) - zap_server.ZAPLOG.Info("payNotify", zap.Any("MchAPIv3Key", utils.CONFIG.MchAPIv3Key), zap.Any("notifyReq", notifyReq), zap.Any("transaction", transaction), zap.Any("err", err)) + zap_server.ZAPLOG.Info("payNotify", zap.Any("notifyReq", notifyReq), zap.Any("transaction", transaction), zap.Any("err", err)) var payOrder *models.PayOrder database.Instance().Model(&models.PayOrder{}).Where("order_id = ?", transaction.OutTradeNo).Find(&payOrder) - payOrder.Status = 1 - database.Instance().Model(&models.PayOrder{}).Updates(&payOrder) + payOrderD := map[string]interface{}{ + "OrderStatus": 1, + "PayId": *transaction.TransactionId, + } + database.Instance().Model(&payOrder).Updates(&payOrderD) + if payOrder.RechargeId > 1 { + var userInfo *models.User + database.Instance().Model(&models.User{}).Where("id = ?", payOrder.Uid).Find(&userInfo) + var rechargeInfo *models.RechargeInfo + database.Instance().Model(&models.RechargeInfo{}).Where("id = ?", payOrder.RechargeId).Find(&rechargeInfo) + rechargePrice, _ := strconv.ParseInt(rechargeInfo.RechargePrice, 10, 64) + + //充值 + userAmountRecord := models.UserAmountRecord{ + UserId: payOrder.Uid, + Type: 1, + OriginAmount: userInfo.Amount, + ProAmount: int(rechargePrice), + CurrAmount: userInfo.Amount + int(rechargePrice), + OrderId: payOrder.OrderId, + ProScene: "充值", + Status: 1, + } + database.Instance().Model(&models.UserAmountRecord{}).Create(&userAmountRecord) + userInfo.Amount = userInfo.Amount + (int(rechargePrice) * 10) + updateValues := map[string]interface{}{ + "Amount": userInfo.Amount, + } + database.Instance().Model(&userInfo).Updates(&updateValues) + } }) }} } diff --git a/business/api/service.go b/business/api/service.go index 2059b09..b4e1387 100644 --- a/business/api/service.go +++ b/business/api/service.go @@ -221,7 +221,6 @@ func (p DefParty) serviceCarLocationList() web_iris.Party { var serviceCarLocation []models.ServiceCarLocation database.Instance().Model(&models.ServiceCarLocation{}).Where("car_id = ? and create_time >= CURDATE()", carOrder.CarId).Find(&serviceCarLocation) Success(ctx, serviceCarLocationListRequest, ServiceCarLocationListResponse{serviceCarLocation}) - }) }} } diff --git a/business/config/wxconfig.json b/business/config/wxconfig.json index a2bd25d..5d0132a 100644 --- a/business/config/wxconfig.json +++ b/business/config/wxconfig.json @@ -7,6 +7,6 @@ "mchId": "1682637612", "mchCertificateSerialNumber": "7DA2108120E4C418537BCF3C061AAB109CCF88A9", "mchAPIv3Key": "chonghujiapanlei1234567891234567", - "privateKeyPath": "D:\\code\\ifish7\\pet-house\\business\\config\\apiclient_key.pem", + "privateKeyPath": "F:\\work\\go\\pet-house\\business\\config\\apiclient_key.pem", "wechatCert": "`-----BEGIN CERTIFICATE-----\nMIIEKzCCAxOgAwIBAgIUfaIQgSDkxBhTe888BhqrEJzPiKkwDQYJKoZIhvcNAQEL\nBQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT\nFFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg\nQ0EwHhcNMjQwOTEwMDc0NDUzWhcNMjkwOTA5MDc0NDUzWjCBhDETMBEGA1UEAwwK\nMTY4MjYzNzYxMjEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL\nDCflroHms6LlrqDmiqTlrrblrqDnianmnI3liqHmnInpmZDlhazlj7gxCzAJBgNV\nBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBALoZ/ZK7BdW1DKCzsqQnS9ElkWhv8Df4JidAupVoaaGa0Iz8cukj\n8JgqzzmOA0fSief3z0OvOvmXQujNLXka38Y+8KB/K/BnqRYVGSvLWKwfdalSS+ca\nJZUNLVQVv1zDrPVPb3JmoJMADPIq2sOfLqjmWPIxRcpa7sPeall5fMx07aVrpi2O\nv1ueRUphIYNT6aV6KnPrRf/lcRwZxE0+l30l45sDNrd7l5tUsnJq/1OLP+kgidkp\nic6W1f3jrHZTwYakgShEUgkRsHeUjIQ0ZRYSsD4Mxn/bqdAxDSDWB6aWGwMrY1ku\nbsPkE/AcXTpgpaC+2kQVhaYrWuly0w0T1jMCAwEAAaOBuTCBtjAJBgNVHRMEAjAA\nMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2\nY2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD\nMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC\nMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQC7\nZgux40pvNohZx721rygjo0yUbx54docNS79Eh5J9ukSKMf0cTsORlAnrsCbSYnIo\nMiqdPqccRYJUefUUuhOrKtuzaka4T+VSiaDTnZ07kB3I8xlvZtW32jHOstVPrJsB\nfEg53sl5sfWHY+OfuEhwOkoH3v/Fs4nH4hQxjO8RW9tNXqLvTrl1JeEwV4bMZxCA\nwCvoMPqn19WBFsaFb0kXF46oGeH5kId6oon0RCi+vXb8nSZ4oPXIJwxi9u/uy+wD\nrVlHohjCK+bRbxGgaIcX5uMPK/M73mzuuLFCbIWN4CLz9yyZGKxNJBq4YuGe+jWa\ngh1GheVuvTdcJ4ZGDhQT\n-----END CERTIFICATE-----`" } \ No newline at end of file diff --git a/core/server/database/main_test.go b/core/server/database/main_test.go index fff9a03..b43e1ca 100644 --- a/core/server/database/main_test.go +++ b/core/server/database/main_test.go @@ -21,7 +21,7 @@ type otheraccounts struct { func TestMain(m *testing.M) { CONFIG.DbName = "pikauser" - CONFIG.Path = "172.31.65.221:3306" + CONFIG.Ip = "172.31.65.221" CONFIG.Password = "qC#5Lp%9AF=6BmR5Ny!6aaabbb" CONFIG.Username = "pikauser_dev"