正在显示
6 个修改的文件
包含
253 行增加
和
249 行删除
| @@ -74,6 +74,13 @@ spec: | @@ -74,6 +74,13 @@ spec: | ||
| 74 | value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" | 74 | value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" |
| 75 | - name: MMM_OPEN_API_SERVICE_HOST | 75 | - name: MMM_OPEN_API_SERVICE_HOST |
| 76 | value: "http://mmm-open-api-dev.fjmaimaimai.com" | 76 | value: "http://mmm-open-api-dev.fjmaimaimai.com" |
| 77 | + - name: UCENTER_SERVICE_HOST | ||
| 78 | + value: "https://suplus-ucenter-dev.fjmaimaimai.com" | ||
| 79 | + - name: BUSINESS_ADMIN_SERVICE_HOST | ||
| 80 | + valueFrom: | ||
| 81 | + configMapKeyRef: | ||
| 82 | + name: suplus-config | ||
| 83 | + key: service.businessadmin | ||
| 77 | volumes: | 84 | volumes: |
| 78 | - name: accesslogs | 85 | - name: accesslogs |
| 79 | emptyDir: {} | 86 | emptyDir: {} |
| @@ -74,6 +74,13 @@ spec: | @@ -74,6 +74,13 @@ spec: | ||
| 74 | value: "https://ability.fjmaimaimai.com" | 74 | value: "https://ability.fjmaimaimai.com" |
| 75 | - name: MMM_OPEN_API_SERVICE_HOST | 75 | - name: MMM_OPEN_API_SERVICE_HOST |
| 76 | value: "https://public-interface.fjmaimaimai.com/openapi" | 76 | value: "https://public-interface.fjmaimaimai.com/openapi" |
| 77 | + - name: UCENTER_SERVICE_HOST | ||
| 78 | + value: "https://suplus-ucenter-prd.fjmaimaimai.com" | ||
| 79 | + - name: BUSINESS_ADMIN_SERVICE_HOST | ||
| 80 | + valueFrom: | ||
| 81 | + configMapKeyRef: | ||
| 82 | + name: suplus-config | ||
| 83 | + key: service.businessadmin | ||
| 77 | volumes: | 84 | volumes: |
| 78 | - name: accesslogs | 85 | - name: accesslogs |
| 79 | emptyDir: {} | 86 | emptyDir: {} |
| @@ -74,6 +74,13 @@ spec: | @@ -74,6 +74,13 @@ spec: | ||
| 74 | value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" | 74 | value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" |
| 75 | - name: MMM_OPEN_API_SERVICE_HOST | 75 | - name: MMM_OPEN_API_SERVICE_HOST |
| 76 | value: "http://mmm-open-api-dev.fjmaimaimai.com" | 76 | value: "http://mmm-open-api-dev.fjmaimaimai.com" |
| 77 | + - name: UCENTER_SERVICE_HOST | ||
| 78 | + value: "https://suplus-ucenter-test.fjmaimaimai.com" | ||
| 79 | + - name: BUSINESS_ADMIN_SERVICE_HOST | ||
| 80 | + valueFrom: | ||
| 81 | + configMapKeyRef: | ||
| 82 | + name: suplus-config | ||
| 83 | + key: service.businessadmin | ||
| 77 | volumes: | 84 | volumes: |
| 78 | - name: accesslogs | 85 | - name: accesslogs |
| 79 | emptyDir: {} | 86 | emptyDir: {} |
| @@ -22,6 +22,8 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | @@ -22,6 +22,8 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | ||
| 22 | defer func() { | 22 | defer func() { |
| 23 | transactionContext.RollbackTransaction() | 23 | transactionContext.RollbackTransaction() |
| 24 | }() | 24 | }() |
| 25 | + | ||
| 26 | + // 事业分红统计-查询订单 | ||
| 25 | _, orderAll, e := OrderBaseResponsitory.Find(utils.ObjectJsonToMap(domain.OrderQueryOption{PartnerId: header.UserId, EndTime: time.Now(), SortByCreateTime: domain.DESC, OrderType: domain.OrderReal})) | 27 | _, orderAll, e := OrderBaseResponsitory.Find(utils.ObjectJsonToMap(domain.OrderQueryOption{PartnerId: header.UserId, EndTime: time.Now(), SortByCreateTime: domain.DESC, OrderType: domain.OrderReal})) |
| 26 | if e != nil { | 28 | if e != nil { |
| 27 | log.Error(e) | 29 | log.Error(e) |
| @@ -32,11 +34,16 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | @@ -32,11 +34,16 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | ||
| 32 | orderBetween = append(orderBetween, orderAll[i]) | 34 | orderBetween = append(orderBetween, orderAll[i]) |
| 33 | } | 35 | } |
| 34 | } | 36 | } |
| 37 | + // 事业分红统计-所有订单统计 | ||
| 35 | bonusAll := AllBonusStatics(orderAll, 0) | 38 | bonusAll := AllBonusStatics(orderAll, 0) |
| 39 | + // 事业分红统计-季度订单统计 | ||
| 36 | bonusQuarters := QuartersBonusStatics(orderBetween, 0) | 40 | bonusQuarters := QuartersBonusStatics(orderBetween, 0) |
| 41 | + | ||
| 42 | + // 业务分红统计 | ||
| 37 | if bonus, e := BusinessBonusRepository.FindOne(map[string]interface{}{"partner_id": header.UserId, "isDisable": 1}); e == nil { | 43 | if bonus, e := BusinessBonusRepository.FindOne(map[string]interface{}{"partner_id": header.UserId, "isDisable": 1}); e == nil { |
| 38 | bonusAll.Receivable += bonus.Bonus | 44 | bonusAll.Receivable += bonus.Bonus |
| 39 | } | 45 | } |
| 46 | + | ||
| 40 | rsp = &protocol.DividendStatisticsResponse{} | 47 | rsp = &protocol.DividendStatisticsResponse{} |
| 41 | rsp.Statistics = protocol.DividendStatistics{ | 48 | rsp.Statistics = protocol.DividendStatistics{ |
| 42 | Received: bonusAll.Received, | 49 | Received: bonusAll.Received, |
| @@ -44,6 +51,7 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | @@ -44,6 +51,7 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | ||
| 44 | Receivable: bonusAll.Receivable, | 51 | Receivable: bonusAll.Receivable, |
| 45 | Quarters: bonusQuarters, | 52 | Quarters: bonusQuarters, |
| 46 | } | 53 | } |
| 54 | + | ||
| 47 | err = transactionContext.CommitTransaction() | 55 | err = transactionContext.CommitTransaction() |
| 48 | return | 56 | return |
| 49 | } | 57 | } |
| @@ -2,21 +2,243 @@ package order | @@ -2,21 +2,243 @@ package order | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/application/factory" | 4 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/application/factory" |
| 5 | + "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" | ||
| 6 | + "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils" | ||
| 7 | + "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/log" | ||
| 5 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" | 8 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" |
| 9 | + "time" | ||
| 6 | ) | 10 | ) |
| 7 | 11 | ||
| 8 | -func Template(header *protocol.RequestHeader, request *protocol.OrderDetailRequest) (rsp *protocol.OrderDetailResponse, err error) { | 12 | +// 订单详情 |
| 13 | +func Detail(header *protocol.RequestHeader, request *protocol.OrderDetailRequest) (rsp *protocol.OrderDetailResponse, err error) { | ||
| 9 | var ( | 14 | var ( |
| 10 | transactionContext, _ = factory.CreateTransactionContext(nil) | 15 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| 11 | - //OrderResponsitory,_ =factory.CreateOrderRepository(transactionContext) | 16 | + OrderResponsitory, _ = factory.CreateOrderBaseRepository(transactionContext) |
| 17 | + OrderDao, _ = factory.CreateOrderBaseDao(transactionContext) | ||
| 18 | + order *domain.OrderBase | ||
| 19 | + ) | ||
| 20 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 21 | + return nil, err | ||
| 22 | + } | ||
| 23 | + defer func() { | ||
| 24 | + transactionContext.RollbackTransaction() | ||
| 25 | + }() | ||
| 26 | + rsp = &protocol.OrderDetailResponse{} | ||
| 27 | + | ||
| 28 | + // 订单详情 | ||
| 29 | + if order, err = OrderResponsitory.FindOne(utils.ObjectJsonToMap(request)); err != nil { | ||
| 30 | + log.Error(err) | ||
| 31 | + return | ||
| 32 | + } | ||
| 33 | + rsp.Order = protocol.OrderDetail{ | ||
| 34 | + Id: order.Id, | ||
| 35 | + OrderNo: order.OrderCode, | ||
| 36 | + DeliveryNo: order.DeliveryCode, | ||
| 37 | + OrderStatus: orderStatus(order), | ||
| 38 | + CreateTime: order.CreateTime.Unix() * 1000, | ||
| 39 | + UpdateTime: order.UpdateTime.Unix() * 1000, | ||
| 40 | + OrderDistrict: map[string]interface{}{"id": order.RegionInfo.RegionId, "name": order.RegionInfo.RegionName}, | ||
| 41 | + Customer: protocol.Customer{Uname: order.Buyer.BuyerName, Phone: order.Buyer.ContactInfo}, | ||
| 42 | + Products: orderProducts(order), | ||
| 43 | + Total: orderTotalStatic(order), | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + // 更新已读(关联事件) | ||
| 47 | + if header.UserId == order.PartnerId && order.UpdateTime.After(order.LastViewTime) { | ||
| 48 | + if err = OrderDao.UpdateLastViewTime(order.Id, time.Now()); err != nil { | ||
| 49 | + return | ||
| 50 | + } | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + err = transactionContext.CommitTransaction() | ||
| 54 | + return | ||
| 55 | +} | ||
| 56 | +func orderStatus(order *domain.OrderBase) int { | ||
| 57 | + var hasBonus = false | ||
| 58 | + for i := range order.OrderGood { | ||
| 59 | + good := order.OrderGood[i] | ||
| 60 | + if good.BonusStatus == domain.BonusPaid { | ||
| 61 | + hasBonus = true | ||
| 62 | + break | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | + if hasBonus { | ||
| 66 | + if order.UseOrderCount >= 0 && order.UseOrderCount < order.PlanOrderCount { | ||
| 67 | + return 3 // 已支付退货 | ||
| 68 | + } | ||
| 69 | + return 2 // 已支付分红 | ||
| 70 | + } | ||
| 71 | + if !hasBonus { | ||
| 72 | + if order.UseOrderCount >= 0 && order.UseOrderCount < order.PlanOrderCount { | ||
| 73 | + return 4 // 待支付退货 | ||
| 74 | + } | ||
| 75 | + return 1 | ||
| 76 | + } | ||
| 77 | + return 1 | ||
| 78 | +} | ||
| 79 | +func orderProducts(order *domain.OrderBase) interface{} { | ||
| 80 | + var products []map[string]interface{} | ||
| 81 | + for i := range order.OrderGood { | ||
| 82 | + good := order.OrderGood[i] | ||
| 83 | + static := good.OrderBonusStatic() | ||
| 84 | + item := make(map[string]interface{}) | ||
| 85 | + item["productName"] = good.GoodName | ||
| 86 | + item["orderCount"] = good.PlanGoodNumber | ||
| 87 | + item["orderAmount"] = good.PlanAmount | ||
| 88 | + item["dividendPercent"] = good.PartnerBonusPercent | ||
| 89 | + item["dividendReceivable"] = static.OrderTotalReceivable() //应收分红 | ||
| 90 | + item["dividendReceived"] = static.OrderBonusReceive() //已收分红 | ||
| 91 | + item["dividendUnReceive"] = static.OrderBonusWait() // 未收分红 | ||
| 92 | + item["dividendExpend"] = static.OrderBonusOutstanding() //分红支出 | ||
| 93 | + if len(good.Remark) > 0 { | ||
| 94 | + item["orderUpdateReason"] = good.Remark | ||
| 95 | + } | ||
| 96 | + item["dividendStatus"] = good.Status() | ||
| 97 | + if good.Status() > 2 { | ||
| 98 | + item["countAdjust"] = good.UseGoodNumber | ||
| 99 | + item["amountAdjust"] = good.UseAmount | ||
| 100 | + } | ||
| 101 | + products = append(products, item) | ||
| 102 | + } | ||
| 103 | + return products | ||
| 104 | +} | ||
| 105 | +func orderTotalStatic(order *domain.OrderBase) interface{} { | ||
| 106 | + item := make(map[string]interface{}) | ||
| 107 | + static := order.OrderBonusStatic() | ||
| 108 | + item["totalCount"] = order.PlanOrderCount | ||
| 109 | + item["totalAmount"] = order.PlanOrderAmount | ||
| 110 | + item["totalDividendReceivable"] = static.OrderTotalReceivable() | ||
| 111 | + item["totalReceived"] = static.OrderBonusReceive() | ||
| 112 | + item["totalUnReceive"] = static.OrderBonusWait() | ||
| 113 | + item["totalExpend"] = static.OrderBonusOutstanding() | ||
| 114 | + if order.UseOrderCount > 0 { | ||
| 115 | + item["totalCountAdjust"] = order.UseOrderCount | ||
| 116 | + item["totalAmountAdjust"] = order.UseOrderAmount | ||
| 117 | + } | ||
| 118 | + return item | ||
| 119 | +} | ||
| 120 | + | ||
| 121 | +// 订单统计 | ||
| 122 | +func Statistics(header *protocol.RequestHeader, request *protocol.OrderStatisticsRequest) (rsp *protocol.OrderStatisticsResponse, err error) { | ||
| 123 | + var ( | ||
| 124 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 125 | + OrderDao, _ = factory.CreateOrderBaseDao(transactionContext) | ||
| 126 | + BusinessBonusRepository, _ = factory.CreateBusinessBonusRepository(transactionContext) | ||
| 127 | + ) | ||
| 128 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 129 | + return nil, err | ||
| 130 | + } | ||
| 131 | + defer func() { | ||
| 132 | + transactionContext.RollbackTransaction() | ||
| 133 | + }() | ||
| 134 | + rsp = &protocol.OrderStatisticsResponse{Statistics: protocol.OrderStatics{}} | ||
| 135 | + | ||
| 136 | + // 当天订单/累计订单 | ||
| 137 | + if rsp.Statistics.TodayRealQuantity, rsp.Statistics.TodayRealMoney, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | ||
| 138 | + BeginTime: utils.GetDayBegin().Unix() * 1000, | ||
| 139 | + EndTime: utils.GetDayEnd().Unix() * 1000, | ||
| 140 | + OrderType: domain.OrderReal, | ||
| 141 | + PartnerId: header.UserId, | ||
| 142 | + }); err != nil { | ||
| 143 | + return | ||
| 144 | + } | ||
| 145 | + if rsp.Statistics.CumulativeQuantity, rsp.Statistics.CumulativeMoney, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | ||
| 146 | + EndTime: time.Now().Unix() * 1000, | ||
| 147 | + OrderType: domain.OrderReal, | ||
| 148 | + PartnerId: header.UserId, | ||
| 149 | + }); err != nil { | ||
| 150 | + return | ||
| 151 | + } | ||
| 152 | + rsp.Statistics.TodayRealMoney = utils.Decimal(rsp.Statistics.TodayRealMoney) | ||
| 153 | + rsp.Statistics.CumulativeMoney = utils.Decimal(rsp.Statistics.CumulativeMoney) | ||
| 154 | + | ||
| 155 | + //事业分红/业务分红 | ||
| 156 | + var careerBonus, businessBonus, total float64 //,developBonus,appBonus | ||
| 157 | + if bonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: header.UserId, OrderType: domain.OrderReal}); e == nil { | ||
| 158 | + careerBonus = bonus.Bonus | ||
| 159 | + total += careerBonus | ||
| 160 | + } | ||
| 161 | + if bonus, e := BusinessBonusRepository.FindOne(map[string]interface{}{"partner_id": header.UserId, "isDisable": 1}); e == nil { | ||
| 162 | + businessBonus = bonus.Bonus | ||
| 163 | + total += businessBonus | ||
| 164 | + rsp.Statistics.BusinessMoney = bonus.Bonus | ||
| 165 | + } | ||
| 166 | + if total != 0 { | ||
| 167 | + rsp.Statistics.CareerPercent = utils.DecimalToNumber(careerBonus * 100 / total) | ||
| 168 | + rsp.Statistics.BusinessPercent = utils.DecimalToNumber(businessBonus * 100 / total) | ||
| 169 | + } | ||
| 170 | + | ||
| 171 | + err = transactionContext.CommitTransaction() | ||
| 172 | + return | ||
| 173 | +} | ||
| 12 | 174 | ||
| 175 | +// 订单列表 | ||
| 176 | +func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (rsp *protocol.OrderListResponse, err error) { | ||
| 177 | + var ( | ||
| 178 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 179 | + OrderResponsitory, _ = factory.CreateOrderBaseRepository(transactionContext) | ||
| 180 | + OrderDao, _ = factory.CreateOrderBaseDao(transactionContext) | ||
| 181 | + orders []*domain.OrderBase | ||
| 13 | ) | 182 | ) |
| 183 | + | ||
| 184 | + rsp = &protocol.OrderListResponse{ | ||
| 185 | + List: make([]*protocol.OrderListItem, 0), | ||
| 186 | + } | ||
| 14 | if err = transactionContext.StartTransaction(); err != nil { | 187 | if err = transactionContext.StartTransaction(); err != nil { |
| 15 | return nil, err | 188 | return nil, err |
| 16 | } | 189 | } |
| 17 | defer func() { | 190 | defer func() { |
| 18 | transactionContext.RollbackTransaction() | 191 | transactionContext.RollbackTransaction() |
| 19 | }() | 192 | }() |
| 193 | + | ||
| 194 | + // 查询订单列表 | ||
| 195 | + queryOption := &domain.OrderQueryOption{ | ||
| 196 | + PartnerId: header.UserId, | ||
| 197 | + Limit: request.PageSize, | ||
| 198 | + Offset: request.PageSize * request.PageIndex, | ||
| 199 | + SortByUpdateTime: domain.DESC, | ||
| 200 | + } | ||
| 201 | + if request.StartTime > 0 { | ||
| 202 | + queryOption.BeginTime = time.Unix(request.StartTime/1000, 0) | ||
| 203 | + } | ||
| 204 | + if request.EndTime > 0 { | ||
| 205 | + queryOption.EndTime = time.Unix(request.EndTime/1000, 0) | ||
| 206 | + } | ||
| 207 | + queryOption.OrderType = request.OrderType | ||
| 208 | + _, orders, _ = OrderResponsitory.Find(utils.ObjectJsonToMap(queryOption)) | ||
| 209 | + if len(orders) != 0 { | ||
| 210 | + for i := range orders { | ||
| 211 | + rsp.List = append(rsp.List, DomainOrderToOrderListItem(orders[i])) | ||
| 212 | + } | ||
| 213 | + } | ||
| 214 | + | ||
| 215 | + // 查询统计数据 | ||
| 216 | + if request.PageIndex == 0 { | ||
| 217 | + var ( | ||
| 218 | + cumulativeQuantity int | ||
| 219 | + ) | ||
| 220 | + //累计实发订单 | ||
| 221 | + cumulativeQuantity, _, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | ||
| 222 | + EndTime: time.Now().Unix() * 1000, | ||
| 223 | + OrderType: domain.OrderReal, | ||
| 224 | + PartnerId: header.UserId, | ||
| 225 | + }) | ||
| 226 | + rsp.Total = cumulativeQuantity | ||
| 227 | + } | ||
| 228 | + | ||
| 20 | err = transactionContext.CommitTransaction() | 229 | err = transactionContext.CommitTransaction() |
| 21 | return | 230 | return |
| 22 | } | 231 | } |
| 232 | +func DomainOrderToOrderListItem(order *domain.OrderBase) *protocol.OrderListItem { | ||
| 233 | + bonusStatic := order.OrderBonusStatic() | ||
| 234 | + return &protocol.OrderListItem{ | ||
| 235 | + Id: order.Id, | ||
| 236 | + OrderType: order.OrderType, | ||
| 237 | + OrderNo: order.OrderCode, | ||
| 238 | + DeliveryNo: order.DeliveryCode, | ||
| 239 | + OrderAmount: order.PlanOrderAmount, | ||
| 240 | + UpdateTime: order.UpdateTime.Unix() * 1000, | ||
| 241 | + MyDividend: bonusStatic.OrderTotalReceivable(), | ||
| 242 | + IsRead: order.IsRead(), | ||
| 243 | + } | ||
| 244 | +} |
pkg/application/order/order_v2.go
已删除
100644 → 0
| 1 | -package order | ||
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/application/factory" | ||
| 5 | - "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" | ||
| 6 | - "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils" | ||
| 7 | - "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/log" | ||
| 8 | - "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" | ||
| 9 | - "time" | ||
| 10 | -) | ||
| 11 | - | ||
| 12 | -// 订单详情 | ||
| 13 | -func Detail(header *protocol.RequestHeader, request *protocol.OrderDetailRequest) (rsp *protocol.OrderDetailResponse, err error) { | ||
| 14 | - var ( | ||
| 15 | - transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 16 | - OrderResponsitory, _ = factory.CreateOrderBaseRepository(transactionContext) | ||
| 17 | - OrderDao, _ = factory.CreateOrderBaseDao(transactionContext) | ||
| 18 | - order *domain.OrderBase | ||
| 19 | - ) | ||
| 20 | - if err = transactionContext.StartTransaction(); err != nil { | ||
| 21 | - return nil, err | ||
| 22 | - } | ||
| 23 | - defer func() { | ||
| 24 | - transactionContext.RollbackTransaction() | ||
| 25 | - }() | ||
| 26 | - | ||
| 27 | - rsp = &protocol.OrderDetailResponse{} | ||
| 28 | - if order, err = OrderResponsitory.FindOne(utils.ObjectJsonToMap(request)); err != nil { | ||
| 29 | - log.Error(err) | ||
| 30 | - return | ||
| 31 | - } | ||
| 32 | - rsp.Order = protocol.OrderDetail{ | ||
| 33 | - Id: order.Id, | ||
| 34 | - OrderNo: order.OrderCode, | ||
| 35 | - DeliveryNo: order.DeliveryCode, | ||
| 36 | - OrderStatus: orderStatus(order), | ||
| 37 | - CreateTime: order.CreateTime.Unix() * 1000, | ||
| 38 | - UpdateTime: order.UpdateTime.Unix() * 1000, | ||
| 39 | - OrderDistrict: map[string]interface{}{"id": order.RegionInfo.RegionId, "name": order.RegionInfo.RegionName}, | ||
| 40 | - Customer: protocol.Customer{Uname: order.Buyer.BuyerName, Phone: order.Buyer.ContactInfo}, | ||
| 41 | - Products: orderProducts(order), | ||
| 42 | - Total: orderTotalStatic(order), | ||
| 43 | - } | ||
| 44 | - if header.UserId == order.PartnerId && order.UpdateTime.After(order.LastViewTime) { | ||
| 45 | - if err = OrderDao.UpdateLastViewTime(order.Id, time.Now()); err != nil { | ||
| 46 | - return | ||
| 47 | - } | ||
| 48 | - } | ||
| 49 | - err = transactionContext.CommitTransaction() | ||
| 50 | - return | ||
| 51 | -} | ||
| 52 | -func orderStatus(order *domain.OrderBase) int { | ||
| 53 | - var hasBonus = false | ||
| 54 | - for i := range order.OrderGood { | ||
| 55 | - good := order.OrderGood[i] | ||
| 56 | - if good.BonusStatus == domain.BonusPaid { | ||
| 57 | - hasBonus = true | ||
| 58 | - break | ||
| 59 | - } | ||
| 60 | - } | ||
| 61 | - if hasBonus { | ||
| 62 | - if order.UseOrderCount >= 0 && order.UseOrderCount < order.PlanOrderCount { | ||
| 63 | - return 3 // 已支付退货 | ||
| 64 | - } | ||
| 65 | - return 2 // 已支付分红 | ||
| 66 | - } | ||
| 67 | - if !hasBonus { | ||
| 68 | - if order.UseOrderCount >= 0 && order.UseOrderCount < order.PlanOrderCount { | ||
| 69 | - return 4 // 待支付退货 | ||
| 70 | - } | ||
| 71 | - return 1 | ||
| 72 | - } | ||
| 73 | - return 1 | ||
| 74 | -} | ||
| 75 | -func orderProducts(order *domain.OrderBase) interface{} { | ||
| 76 | - var products []map[string]interface{} | ||
| 77 | - for i := range order.OrderGood { | ||
| 78 | - good := order.OrderGood[i] | ||
| 79 | - static := good.OrderBonusStatic() | ||
| 80 | - item := make(map[string]interface{}) | ||
| 81 | - item["productName"] = good.GoodName | ||
| 82 | - item["orderCount"] = good.PlanGoodNumber | ||
| 83 | - item["orderAmount"] = good.PlanAmount | ||
| 84 | - item["dividendPercent"] = good.PartnerBonusPercent | ||
| 85 | - item["dividendReceivable"] = static.OrderTotalReceivable() //应收分红 | ||
| 86 | - item["dividendReceived"] = static.OrderBonusReceive() //已收分红 | ||
| 87 | - item["dividendUnReceive"] = static.OrderBonusWait() // 未收分红 | ||
| 88 | - item["dividendExpend"] = static.OrderBonusOutstanding() //分红支出 | ||
| 89 | - if len(good.Remark) > 0 { | ||
| 90 | - item["orderUpdateReason"] = good.Remark | ||
| 91 | - } | ||
| 92 | - item["dividendStatus"] = good.Status() | ||
| 93 | - if good.Status() > 2 { | ||
| 94 | - item["countAdjust"] = good.UseGoodNumber | ||
| 95 | - item["amountAdjust"] = good.UseAmount | ||
| 96 | - } | ||
| 97 | - products = append(products, item) | ||
| 98 | - } | ||
| 99 | - return products | ||
| 100 | -} | ||
| 101 | -func orderTotalStatic(order *domain.OrderBase) interface{} { | ||
| 102 | - item := make(map[string]interface{}) | ||
| 103 | - static := order.OrderBonusStatic() | ||
| 104 | - item["totalCount"] = order.PlanOrderCount | ||
| 105 | - item["totalAmount"] = order.PlanOrderAmount | ||
| 106 | - item["totalDividendReceivable"] = static.OrderTotalReceivable() | ||
| 107 | - item["totalReceived"] = static.OrderBonusReceive() | ||
| 108 | - item["totalUnReceive"] = static.OrderBonusWait() | ||
| 109 | - item["totalExpend"] = static.OrderBonusOutstanding() | ||
| 110 | - if order.UseOrderCount > 0 { | ||
| 111 | - item["totalCountAdjust"] = order.UseOrderCount | ||
| 112 | - item["totalAmountAdjust"] = order.UseOrderAmount | ||
| 113 | - } | ||
| 114 | - return item | ||
| 115 | -} | ||
| 116 | - | ||
| 117 | -// 订单统计 | ||
| 118 | -func Statistics(header *protocol.RequestHeader, request *protocol.OrderStatisticsRequest) (rsp *protocol.OrderStatisticsResponse, err error) { | ||
| 119 | - var ( | ||
| 120 | - transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 121 | - OrderDao, _ = factory.CreateOrderBaseDao(transactionContext) | ||
| 122 | - BusinessBonusRepository, _ = factory.CreateBusinessBonusRepository(transactionContext) | ||
| 123 | - //PartnerInfoRepository, _ = factory.CreatePartnerInfoRepositoryIn(transactionContext) | ||
| 124 | - //partnerInfo *domain.PartnerInfo | ||
| 125 | - //orderBonus domain.OrderBonusResponse | ||
| 126 | - ) | ||
| 127 | - if err = transactionContext.StartTransaction(); err != nil { | ||
| 128 | - return nil, err | ||
| 129 | - } | ||
| 130 | - defer func() { | ||
| 131 | - transactionContext.RollbackTransaction() | ||
| 132 | - }() | ||
| 133 | - rsp = &protocol.OrderStatisticsResponse{Statistics: protocol.OrderStatics{}} | ||
| 134 | - //if partnerInfo, err := PartnerInfoRepository.FindOne(map[string]interface{}{"id": header.UserId}); err != nil { | ||
| 135 | - // err = protocol.NewCustomMessage(1, fmt.Sprintf("%v %v", "用户不存在:", header.UserId)) | ||
| 136 | - // return | ||
| 137 | - //} | ||
| 138 | - | ||
| 139 | - if rsp.Statistics.TodayRealQuantity, rsp.Statistics.TodayRealMoney, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | ||
| 140 | - BeginTime: utils.GetDayBegin().Unix() * 1000, | ||
| 141 | - EndTime: utils.GetDayEnd().Unix() * 1000, | ||
| 142 | - OrderType: domain.OrderReal, | ||
| 143 | - PartnerId: header.UserId, | ||
| 144 | - }); err != nil { | ||
| 145 | - return | ||
| 146 | - } | ||
| 147 | - if rsp.Statistics.CumulativeQuantity, rsp.Statistics.CumulativeMoney, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | ||
| 148 | - EndTime: time.Now().Unix() * 1000, | ||
| 149 | - OrderType: domain.OrderReal, | ||
| 150 | - PartnerId: header.UserId, | ||
| 151 | - }); err != nil { | ||
| 152 | - return | ||
| 153 | - } | ||
| 154 | - rsp.Statistics.TodayRealMoney = utils.Decimal(rsp.Statistics.TodayRealMoney) | ||
| 155 | - rsp.Statistics.CumulativeMoney = utils.Decimal(rsp.Statistics.CumulativeMoney) | ||
| 156 | - | ||
| 157 | - //事业分红/业务分红 | ||
| 158 | - var careerBonus, businessBonus, total float64 //,developBonus,appBonus | ||
| 159 | - if bonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: header.UserId, OrderType: domain.OrderReal}); e == nil { | ||
| 160 | - careerBonus = bonus.Bonus | ||
| 161 | - total += careerBonus | ||
| 162 | - } | ||
| 163 | - if bonus, e := BusinessBonusRepository.FindOne(map[string]interface{}{"partner_id": header.UserId, "isDisable": 1}); e == nil { | ||
| 164 | - businessBonus = bonus.Bonus | ||
| 165 | - total += businessBonus | ||
| 166 | - rsp.Statistics.BusinessMoney = bonus.Bonus | ||
| 167 | - } | ||
| 168 | - | ||
| 169 | - if total == 0 { | ||
| 170 | - return | ||
| 171 | - } | ||
| 172 | - rsp.Statistics.CareerPercent = utils.DecimalToNumber(careerBonus * 100 / total) | ||
| 173 | - rsp.Statistics.BusinessPercent = utils.DecimalToNumber(businessBonus * 100 / total) | ||
| 174 | - err = transactionContext.CommitTransaction() | ||
| 175 | - return | ||
| 176 | -} | ||
| 177 | - | ||
| 178 | -// 订单列表 | ||
| 179 | -func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (rsp *protocol.OrderListResponse, err error) { | ||
| 180 | - var ( | ||
| 181 | - transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 182 | - OrderResponsitory, _ = factory.CreateOrderBaseRepository(transactionContext) | ||
| 183 | - OrderDao, _ = factory.CreateOrderBaseDao(transactionContext) | ||
| 184 | - orders []*domain.OrderBase | ||
| 185 | - ) | ||
| 186 | - | ||
| 187 | - rsp = &protocol.OrderListResponse{ | ||
| 188 | - List: make([]*protocol.OrderListItem, 0), | ||
| 189 | - Statistics: make(map[string]interface{}), | ||
| 190 | - } | ||
| 191 | - if err = transactionContext.StartTransaction(); err != nil { | ||
| 192 | - return nil, err | ||
| 193 | - } | ||
| 194 | - defer func() { | ||
| 195 | - transactionContext.RollbackTransaction() | ||
| 196 | - }() | ||
| 197 | - queryOption := &domain.OrderQueryOption{ | ||
| 198 | - PartnerId: header.UserId, | ||
| 199 | - Limit: request.PageSize, | ||
| 200 | - Offset: request.PageSize * request.PageIndex, | ||
| 201 | - SortByUpdateTime: domain.DESC, | ||
| 202 | - } | ||
| 203 | - if request.StartTime > 0 { | ||
| 204 | - queryOption.BeginTime = time.Unix(request.StartTime/1000, 0) | ||
| 205 | - } | ||
| 206 | - if request.EndTime > 0 { | ||
| 207 | - queryOption.EndTime = time.Unix(request.EndTime/1000, 0) | ||
| 208 | - } | ||
| 209 | - queryOption.OrderType = request.OrderType | ||
| 210 | - _, orders, _ = OrderResponsitory.Find(utils.ObjectJsonToMap(queryOption)) | ||
| 211 | - //统计数据 | ||
| 212 | - if request.PageIndex == 0 { | ||
| 213 | - var ( | ||
| 214 | - cumulativeQuantity int | ||
| 215 | - ) | ||
| 216 | - //累计实发订单 | ||
| 217 | - cumulativeQuantity, _, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | ||
| 218 | - EndTime: time.Now().Unix() * 1000, | ||
| 219 | - OrderType: domain.OrderReal, | ||
| 220 | - PartnerId: header.UserId, | ||
| 221 | - }) | ||
| 222 | - rsp.Total = cumulativeQuantity | ||
| 223 | - } | ||
| 224 | - | ||
| 225 | - if len(orders) == 0 { | ||
| 226 | - return | ||
| 227 | - } | ||
| 228 | - for i := range orders { | ||
| 229 | - rsp.List = append(rsp.List, DomainOrderToOrderListItem(orders[i])) | ||
| 230 | - } | ||
| 231 | - | ||
| 232 | - err = transactionContext.CommitTransaction() | ||
| 233 | - return | ||
| 234 | -} | ||
| 235 | -func DomainOrderToOrderListItem(order *domain.OrderBase) *protocol.OrderListItem { | ||
| 236 | - bonusStatic := order.OrderBonusStatic() | ||
| 237 | - return &protocol.OrderListItem{ | ||
| 238 | - Id: order.Id, | ||
| 239 | - OrderType: order.OrderType, | ||
| 240 | - OrderNo: order.OrderCode, | ||
| 241 | - DeliveryNo: order.DeliveryCode, | ||
| 242 | - OrderAmount: order.PlanOrderAmount, | ||
| 243 | - UpdateTime: order.UpdateTime.Unix() * 1000, | ||
| 244 | - MyDividend: bonusStatic.OrderTotalReceivable(), | ||
| 245 | - IsRead: order.IsRead(), | ||
| 246 | - } | ||
| 247 | -} |
-
请 注册 或 登录 后发表评论