Ver código fonte

Merge remote-tracking branch 'origin/feature/v4.10.2' into feature/v4.10.2

duxin 1 mês atrás
pai
commit
55c060f1bd

+ 1 - 1
src/jfw/modules/app/src/web/templates/big-member/page_orderdetail_member.html

@@ -323,7 +323,7 @@
                           return (s.id === -1 || sId.indexOf(s.id.toString()) > -1) && v.subject.indexOf(buySubject) > -1
                         })
                         // 将重复的二级服务分类通过名称name去重(目前仅有企业情报监控)
-                        v.serverMap = removeRepeat(v.serverMap)
+                        v.serverMap = removeRepeat(v.serverMap.reverse())
                         return v && v.serverMap.length > 0
                       })
                       buchongbaoHtml += '<table class="service-table"><tr class="thead"><td class="first">服务分类</td><td><div class="service-map"><span class="second">服务项目</span><span class="third">大会员自定义版</span></div></td></tr>'

+ 4 - 0
src/jfw/modules/subscribepay/src/entity/consts.go

@@ -8,6 +8,10 @@ import (
 const (
 	TableDataexportOrder = "dataexport_order" // 订单表表名
 	EquityErrMsg         = "您已开通%s权益,请于%s权益到期后再行兑换。"
+	MemberCycleTypeMonth = 0 // 单位 :月
+	MemberCycleTypeDay   = 1 // 单位 :天 当前版本不支持
+	MemberCycleTypeYear  = 2 // 单位 :年
+
 )
 
 var memberCodeNameMapping = map[int64]string{

+ 45 - 13
src/jfw/modules/subscribepay/src/entity/equityCode.go

@@ -582,8 +582,9 @@ func (e *EquityCode) UseEquityCodeAndAuthority() (m string, flag bool) {
 			/*
 			   //大会员开通权限
 			*/
-			level := productInfo.NumType //1:专业版;2:智慧版;3:商机版;4:试用版 5:试用版 6:商机版2.0 7:专家版2.0
-			cycle := productInfo.Num     //默认年
+			level, cycleType := getEquityMemberInfo(productInfo.NumType)
+			//level := productInfo.NumType //1:专业版;2:智慧版;3:商机版;4:试用版 5:试用版 6:商机版2.0 7:专家版2.0
+			cycle := productInfo.Num //默认年
 			//判断当前是否是大会员
 			if baseMsg.Status > 0 && baseMsg.Status != level {
 				productInfo := fmt.Sprintf("大会员%s", memberCodeNameMapping[int64(baseMsg.Status)])
@@ -610,14 +611,23 @@ func (e *EquityCode) UseEquityCodeAndAuthority() (m string, flag bool) {
 			}
 			//计算价格
 			orderMoney := MemberStruct.GetMoney(e.UserId, level, cycle)
+			yearNum := cycle
+			if cycleType == MemberCycleTypeMonth {
+				orderMoney = orderMoney / 10 // 大会员月份版价格计算
+				yearNum = cycle / 12
+			}
 			filterMap := map[string]interface{}{
-				"cycle": cycle,
-				"level": level,
-				"badge": "exchange",
+				"cycle":     cycle,
+				"level":     level,
+				"badge":     "exchange",
+				"cycleType": cycleType, // 0-月 1-天 2或者没有该字段的时候-年
 			}
 			filterMap["zeroOrderType"] = "权益码兑换"
 			filter, _ := json.Marshal(filterMap)
 			endDate := time.Date(startTime.Year()+cycle, startTime.Month(), startTime.Day(), 23, 59, 59, 0, time.Local)
+			if cycleType == MemberCycleTypeMonth {
+				endDate = time.Date(startTime.Year(), startTime.Month()+time.Month(cycle), startTime.Day(), 23, 59, 59, 0, time.Local)
+			}
 			insertObj := map[string]interface{}{
 				"order_money":          orderMoney,
 				"filter":               string(filter),
@@ -705,7 +715,7 @@ func (e *EquityCode) UseEquityCodeAndAuthority() (m string, flag bool) {
 				positionType := qu.Int64All(sessVal["positionType"])
 				entId := qu.Int64All(sessVal["entId"])
 				entUserId := qu.Int64All(sessVal["entUserId"])
-				normal_member(level, endDate, e.UserId, positionType, entId, entUserId, cycle)
+				normal_member(level, endDate, e.UserId, positionType, entId, entUserId, yearNum)
 			}
 			//取消其他订单
 			go PayCancel(e.UserId, "大会员", "")
@@ -1137,8 +1147,9 @@ func (e *EquityCode) H5UseEquityCodeAndAuthority() (m string, flag bool, status
 			/*
 			   //大会员开通权限
 			*/
-			level := productInfo.NumType //1:专业版;2:智慧版;3:商机版;4:试用版 5:试用版 6:商机版2.0 7:专家版2.0
-			cycle := productInfo.Num     //默认年
+			level, cycleType := getEquityMemberInfo(productInfo.NumType)
+			//level := productInfo.NumType //1:专业版;2:智慧版;3:商机版;4:试用版 5:试用版 6:商机版2.0 7:专家版2.0
+			cycle := productInfo.Num //默认年
 			//判断当前是否是大会员
 			if bigStatus > 0 && bigStatus != level {
 				// 查省份数量
@@ -1178,14 +1189,24 @@ func (e *EquityCode) H5UseEquityCodeAndAuthority() (m string, flag bool, status
 			}
 			//计算价格
 			orderMoney := MemberStruct.GetMoney(e.UserId, level, cycle)
+			yearNum := cycle
+			if cycleType == MemberCycleTypeMonth {
+				orderMoney = orderMoney / 10 // 大会员月份版价格计算
+				yearNum = cycle / 12
+			}
 			filterMap := map[string]interface{}{
-				"cycle": cycle,
-				"level": level,
-				"badge": "exchange",
+				"cycle":     cycle,
+				"level":     level,
+				"badge":     "exchange",
+				"cycleType": cycleType, // 0-月 1-天 2或者没有该字段的时候-年
 			}
 			filterMap["zeroOrderType"] = "权益码兑换"
 			filter, _ := json.Marshal(filterMap)
+			// 默认年
 			endDate := time.Date(startTime.Year()+cycle, startTime.Month(), startTime.Day(), 23, 59, 59, 0, time.Local)
+			if cycleType == MemberCycleTypeMonth {
+				endDate = time.Date(startTime.Year(), startTime.Month()+time.Month(cycle), startTime.Day(), 23, 59, 59, 0, time.Local)
+			}
 			insertObj := map[string]interface{}{
 				"order_money":          orderMoney,
 				"filter":               string(filter),
@@ -1270,7 +1291,7 @@ func (e *EquityCode) H5UseEquityCodeAndAuthority() (m string, flag bool, status
 				memberRenew(endDate, e.UserId)
 			} else {
 				//开通大会员
-				normal_member(level, endDate, e.UserId, 0, 0, 0, cycle)
+				normal_member(level, endDate, e.UserId, 0, 0, 0, yearNum)
 			}
 			//取消其他订单
 			go PayCancel(e.UserId, "大会员", "")
@@ -1398,6 +1419,17 @@ func (e *EquityCode) H5UseEquityCodeAndAuthority() (m string, flag bool, status
 	return "", flag, 0, isMemberProduct
 }
 
+// 获取大会员权益码的level和类型
+func getEquityMemberInfo(timeType int) (int, int) {
+	if timeType < 10 {
+		return timeType, MemberCycleTypeYear
+	}
+	// 取最后一位作为时间单位
+	type_ := timeType % 10
+	level := timeType / 10
+	return level, type_
+}
+
 type ExchangeRecords struct {
 	Count   int        `json:"count"`
 	Records []*records `json:"records"`
@@ -1419,7 +1451,7 @@ func (e *EquityCode) ExchangeRecords() (*ExchangeRecords, error) {
 	//方式重复性请求--1秒内 允许请求一次
 	redis.Put("other", repeatKey, "REPEAT", 1)
 	if e.UserId != "" {
-		res := util.ActivityMysql.SelectBySql(`SELECT a.equityCode,a.userTime,b.equityName FROM equity_record a LEFT JOIN equity b ON a.equityId = b.id WHERE a.userId = ? ORDER BY a.userTime DESC`, e.UserId)
+		res := util.ActivityMysql.SelectBySql(`SELECT a.equityCode,a.userTime,b.name as equityName FROM jyactivities.equity_record a LEFT JOIN jyactivities.gift b ON a.giftCode = b.giftCode   WHERE a.userId = ? ORDER BY a.userTime DESC`, e.UserId)
 		if res != nil && len(*res) > 0 {
 			for _, ev := range *res {
 				if ev["userTime"] != nil && qu.ObjToString(ev["userTime"]) != "" {

+ 1 - 7
src/jfw/modules/subscribepay/src/entity/jyCourseOnlineStruct.go

@@ -52,13 +52,7 @@ func (this *jyCourseOnline) PayCallBack(param *CallBackParam) bool {
 					return false
 				}
 				service_starttime := now.Format(time.DateTime)
-				service_endtime := now.Format(time.DateTime)
-				if vip_endtime := qutil.ObjToString((*orderdata)["vip_endtime"]); vip_endtime != "" {
-					service_endtime = vip_endtime
-				}
-				if vip_starttime := qutil.ObjToString((*orderdata)["vip_starttime"]); vip_starttime != "" {
-					service_starttime = vip_starttime
-				}
+				service_endtime := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, time.Local).Format(time.DateTime)
 				if !util.Mysql.UpdateByTx(tx, "jy_order_detail", g.Map{
 					"order_code": orderCode,
 				}, map[string]interface{}{

+ 11 - 9
src/jfw/modules/subscribepay/src/entity/member.go

@@ -223,15 +223,17 @@ func normal_member(level int, enddate time.Time, userId string, positionType, en
 				serverName := qutil.ObjToString(m["s_new_name"])
 				//pdf下载包服务
 				if productCode, ok := bigMemberNameCodeMapping[serverName]; ok && productCode != 0 {
-					var num int = yearNum * qutil.IntAll(m["s_count_year"])
-					_, err := JyPdfExportPack.RechargePack(userId, &PdfPackDetail{
-						EndTime:  FormatDate(&enddate, Date_Short_Layout),
-						PackNum:  num,
-						PackType: productCode,
-						Source:   fmt.Sprintf("大会员产品套餐有%d份“%s”权益", num, serverName),
-					})
-					if err != nil {
-						log.Printf("%s 大会员开通pdf下载包服务异常 %v \n", userId, err)
+					if yearNum > 0 {
+						var num int = yearNum * qutil.IntAll(m["s_count_year"])
+						_, err := JyPdfExportPack.RechargePack(userId, &PdfPackDetail{
+							EndTime:  FormatDate(&enddate, Date_Short_Layout),
+							PackNum:  num,
+							PackType: productCode,
+							Source:   fmt.Sprintf("大会员产品套餐有%d份“%s”权益", num, serverName),
+						})
+						if err != nil {
+							log.Printf("%s 大会员开通pdf下载包服务异常 %v \n", userId, err)
+						}
 					}
 				} else {
 					var (

+ 1 - 1
src/jfw/modules/subscribepay/src/entity/reWardStruct.go

@@ -72,7 +72,7 @@ func (r *reWardStruct) PayCallBack(param *CallBackParam) bool {
 			return false
 		}
 		//
-		return false
+		return true
 	}) {
 		log.Println("用户打赏收入保存出错")
 		return false

+ 1 - 1
src/jfw/modules/subscribepay/src/entity/resourcePackStruct.go

@@ -70,7 +70,7 @@ func (this *resoucePackStruct) PayCallBack(param *CallBackParam) bool {
 				"service_starttime": now.Format(time.DateTime),
 			}
 			if endTime := gconv.String(filterM["validTime"]); endTime != "" {
-				parsedTime, err := time.Parse("2006-01-02", endTime)
+				parsedTime, err := time.Parse(time.DateTime, fmt.Sprintf("%s 23:59:59", endTime))
 				if err == nil {
 					upDetail["service_endtime"] = parsedTime.Format("2006-01-02 15:04:05")
 				}

+ 6 - 3
src/jfw/modules/subscribepay/src/entity/shareFission.go

@@ -168,7 +168,7 @@ func Order(userid, starttime, endtime string, types, dayNum int, remark, phone s
 			return false
 		}
 		//插入订单明细表
-		util.Mysql.InsertByTx(tx, "", g.Map{
+		if util.Mysql.InsertByTx(tx, "jy_order_detail", g.Map{
 			"order_code":        ordercode,
 			"product_type":      "VIP订阅",
 			"original_price":    0,
@@ -185,8 +185,11 @@ func Order(userid, starttime, endtime string, types, dayNum int, remark, phone s
 				"give_type":         filter.SellerGiveType,                            // 类型 1天 2月 3年 4季度
 				"give_cycle":        filter.SellerGiveCycle,
 				"finalAccountCount": 1,
-				"finalAreaCount":    -1,
-			})})
+				"finalAreaCount":    1,
+				"addAreaCount":      1,
+			})}) == 0 {
+			return false
+		}
 		return true
 	}); ok {
 		// 新增一条审核记录

+ 2 - 2
src/jfw/modules/subscribepay/src/service/orderListDetails.go

@@ -985,8 +985,8 @@ WHERE
 					}
 					if qutil.IntAll(data["order_status"]) == 1 {
 						timeMap = map[string]interface{}{}
-						timeMap["vip_endtime"] = data["vip_endtime"]
-						timeMap["vip_starttime"] = data["vip_starttime"]
+						timeMap["vip_endtime"] = data["service_endtime"]
+						timeMap["vip_starttime"] = data["service_starttime"]
 					}
 					delete(data, "_id")
 					transaction_id = getPayTransactionId(qutil.ObjToString(data["pay_way"]), qutil.ObjToString(data["out_trade_no"]))

+ 4 - 17
src/jfw/modules/subscribepay/src/service/salesCreateOrder.go

@@ -580,24 +580,11 @@ func (this *SalesCreateOrder) GetValuationList() {
 		}
 		order_code := this.GetString("order_code")
 		upgradeSubtotail := []map[string]interface{}{}
-		//queryMap := map[string]interface{}{
-		//    "order_code": order_code,
-		//    "user_Id":    userId,
-		//}
-		var filter *map[string]interface{}
-		//filter := util.Mysql.FindOne(tableName_order, queryMap, "filter,order_money", "")
-		oDatas := util.Mysql.SelectBySql(fmt.Sprintf(`SELECT
-	%s
-FROM
-	dataexport_order dor
-	INNER JOIN ( SELECT order_code, COUNT(*) AS detail_count FROM jy_order_detail GROUP BY order_code HAVING detail_count = 1 ) joc ON dor.order_code = joc.order_code
-	INNER JOIN jy_order_detail jyd ON dor.order_code = jyd.order_code
-WHERE
-	dor.order_code = '%s'
-	AND dor.user_id = '%s'`, "dor.order_money,dor.pay_time,dor.user_mail,dor.pay_way,dor.pay_money,jyd.filter", order_code, userId))
-		if oDatas != nil && len(*oDatas) > 0 {
-			filter = &(*oDatas)[0]
+		queryMap := map[string]interface{}{
+			"order_code": order_code,
+			"user_Id":    userId,
 		}
+		filter := util.Mysql.FindOne(tableName_order, queryMap, "filter,order_money", "")
 		if filter == nil {
 			return nil, fmt.Errorf("未知订单")
 		}

+ 14 - 1
src/web/staticres/common-module/order-list/js/order-list.js

@@ -1785,6 +1785,14 @@ var vm = new Vue({
       var addAreaCount = filter_vip.addAreaCount || filter_vip_new.addAreaCount || 0
       return addAreaCount <= 0
     },
+    calcIsOnlyAddPower: function(order) {
+      var filter_vip = this.getFilterInfo(order)
+      var filter_vip_new = this.getNewFilterInfo(order)
+      var buyAccountCount = filter_vip.buyAccountCount || filter_vip_new.buyAccountCount || 0
+      var giftAccountCount = filter_vip.giftAccountCount || filter_vip_new.giftAccountCount || 0
+      var totalAccountCount = Number(buyAccountCount) + Number(giftAccountCount)
+      return totalAccountCount <= 0
+    },
     calcBackOrderTime: function(filterNewObj) {
       var cmap={1:"天",2:"月",3:"年",4:"季"}
       var cycle = ''
@@ -1887,6 +1895,7 @@ var vm = new Vue({
 		}
 
     var onlyAddCount = this.calcIsOnlyAddCount(order)
+    var onlyAddPower = this.calcIsOnlyAddPower(order)
     var upgrade = order.vip_type == 2
     if (onlyAddCount && upgrade) {
       infoList = []
@@ -1904,7 +1913,11 @@ var vm = new Vue({
         infoList.push(date)
       }
       if(order.buy_subject=='2'){
-        infoList.unshift(buyNum_vip)
+        if (onlyAddPower && upgrade) {
+          // do something
+        } else {
+          infoList.unshift(buyNum_vip)
+        }
       }
       return infoList
     },

+ 16 - 1
src/web/staticres/common-module/public/js/big-service-list.js

@@ -428,7 +428,22 @@ var serviceListData = [
         "id": 18,
         "name": "数据导出",
         "num": '200条/天'
-      }
+      },
+      {
+        "id": 30055,
+        "name": "数据导出",
+        "num": '300条/天'
+      },
+      {
+        "id": 30056,
+        "name": "数据导出",
+        "num": '400条/天'
+      },
+      {
+        "id": 30057,
+        "name": "数据导出",
+        "num": '500条/天'
+      },
     ]
   },
   {

+ 2 - 2
src/web/templates/frontRouter/wx/vipIntro/free/order_detail.html

@@ -715,10 +715,10 @@
                     }, 1000)
                     $(".invoice").hide();//隐藏开发票
                     $(".j-footer").show().html("<button class='j-button-confirm' style='width: 100%!important;' >去支付</button>").on("click", function () {
-                        var vipType = r.data.order.vip_type
                         //0试用用户、1续费、2升级、3购买
+                        var vipType = r.data.order.vip_type
                         if (r.data.order.service_type) {
-                            vipType = r.data.order.service_type - 1
+                            vipType = 3
                         } else {
                             if (!r.data.order.vip_type) {
                                 if (r.data.order.order_money > 0) {

+ 1 - 1
src/web/templates/pc/member_orderDetail.html

@@ -425,7 +425,7 @@
                                   return (s.id === -1 || sId.indexOf(s.id.toString()) > -1) && v.subject.indexOf(buySubject) > -1
                                 })
                                 // 将重复的二级服务分类去重(目前仅有企业情报监控)
-                                v.serverMap = removeRepeat(v.serverMap)
+                                v.serverMap = removeRepeat(v.serverMap.reverse())
                                 return v && v.serverMap.length > 0
                               })
                               buchongbaoHtml += '<table class="service-table"><tr class="thead"><td class="first">服务分类</td><td><div class="service-map"><span class="second">服务项目</span><span class="third">大会员自定义版</span></div></td></tr>'

+ 18 - 8
src/web/templates/pc/myOrder.html

@@ -327,7 +327,7 @@
                   </div>
                   <!-- 超级订阅订单 -->
                   <div class="fl shop_main" v-if="item.product_type === 'VIP订阅'">
-                    <p v-if="item.buy_subject=='2'">购买数量:@#item.buyAccountNum#@人</p>
+                    <p v-if="item.buy_subject=='2' && !item.vipInfo.onlyAddPower">购买数量:@#item.buyAccountNum#@人</p>
                     <p v-if="!item.vipInfo.onlyAddCount">
                       <span v-if="item.vip_type=='1'">续费</span><span v-else-if="item.vip_type=='2'">升级</span><span v-else>购买</span>区域:@#item.vipInfo.area#@
                     </p>
@@ -1190,17 +1190,23 @@
               if (v.order_status !== 1) {
                 v.vip_starttime = "-"
               }
-              v.vipInfo = vipInfo
-
-              var addAreaCount = v.filter.addAreaCount || v.newFilter.addAreaCount || 0
-              if (addAreaCount <= 0) {
-                vipInfo.onlyAddCount = true
-              }
               
               // vip_type: //0:购买 1:续费 2:升级 3:试用
               var buyAccountCount = v.filter.buyAccountCount || v.newFilter.buyAccountCount || 0
               var giftAccountCount = v.filter.giftAccountCount || v.newFilter.giftAccountCount || 0
               var totalAccountCount = Number(buyAccountCount) + Number(giftAccountCount) + 1
+
+              var addAreaCount = v.filter.addAreaCount || v.newFilter.addAreaCount || 0
+              // 升级
+              if (v.vip_type == 2) {
+                if (addAreaCount <= 0) {
+                  vipInfo.onlyAddCount = true
+                }
+                if (totalAccountCount <= 1) {
+                  vipInfo.onlyAddPower = true
+                }
+              }
+
               // 续费vip_type=1
               if (v.vip_type == 1) {
                 // 人数就是购买人数
@@ -1221,6 +1227,9 @@
               } else {
                 v.buyAccountNum = v.buyNum||v.newFilter.finalAccountCount || 0
               }
+
+              // v.vipInfo = vipInfo
+              _this.$set(v, 'vipInfo', vipInfo)
             }
 
             // 医械通订单
@@ -1318,7 +1327,8 @@
               if (v.order_status !== 1) {
                 v.vip_starttime = "-"
               }
-              v.vipInfo = vipInfo
+              _this.$set(v, 'vipInfo', vipInfo)
+              // v.vipInfo = vipInfo
             }
 
 

+ 1 - 1
src/web/templates/pc/vip_orderDetail.html

@@ -175,7 +175,7 @@
             var giftAccountCount = filterInfo.giftAccountCount || filter_vip_new.giftAccountCount || 0
             var totalAccountCount = Number(buyAccountCount) + Number(giftAccountCount) + 1
 
-            var addAreaCount = v.filter.addAreaCount || v.newFilter.addAreaCount || 0
+            var addAreaCount = filterInfo.addAreaCount || filter_vip_new.addAreaCount || 0
             var onlyAddCount = addAreaCount <= 0 // 仅增购子账号
             
             // 续费vip_type=1

+ 42 - 40
src/web/templates/weixin/commonPay/checkout.html

@@ -293,47 +293,49 @@
                         } else if (r.err_msg === "get_brand_wcpay_request:cancel") {
                             //取消支付 跳转订单详情
                             console.log("取消支付")
-                            switch (checkout.orderInfo.productType) {
-                                case "subvip": {
-                                    window.location.replace("/front/vipsubscribe/toOrderDetailPage?orderCode=" + checkout.orderInfo.ordercode)
-                                    break
-                                }
-                                case "dataexport" : {
-                                    window.location.replace("/front/wx_dataExport/wxToOrderDetail?orderCode=" + checkout.orderInfo.ordercode)
-                                    break
-                                }
-                                case "onlineCourse": {
-                                    window.location.replace("/weixin/pay/xs_payNow?code=" + checkout.orderInfo.ordercode)
-                                    break
-                                }
-                                case "member": {
-                                    window.location.replace("/front/wxMyOrder/memberDetail/" + checkout.orderInfo.ordercode)
-                                    break
-                                }
-                                case "member": {
-                                    window.location.replace("/front/wxMyOrder/aiForecastPackdetail/" + orderCode)
-                                    break
-                                }
-                                case "bidfile": {
-                                    var  bigmemberBid=checkout.getUrlParam("b");
-                                    var href="/front/wxMyOrder/bidfileDetail/" + orderCode;
-                                    if (bigmemberBid==="1"){
-                                      href="/front/wxMyOrder/aiForecastPackdetail/" + orderCode;
+                            if (!this.data.token) {
+                                switch (checkout.orderInfo.productType) {
+                                    case "subvip": {
+                                        window.location.replace("/front/vipsubscribe/toOrderDetailPage?orderCode=" + checkout.orderInfo.ordercode)
+                                        break
+                                    }
+                                    case "dataexport" : {
+                                        window.location.replace("/front/wx_dataExport/wxToOrderDetail?orderCode=" + checkout.orderInfo.ordercode)
+                                        break
+                                    }
+                                    case "onlineCourse": {
+                                        window.location.replace("/weixin/pay/xs_payNow?code=" + checkout.orderInfo.ordercode)
+                                        break
+                                    }
+                                    case "member": {
+                                        window.location.replace("/front/wxMyOrder/memberDetail/" + checkout.orderInfo.ordercode)
+                                        break
+                                    }
+                                    case "member": {
+                                        window.location.replace("/front/wxMyOrder/aiForecastPackdetail/" + orderCode)
+                                        break
+                                    }
+                                    case "bidfile": {
+                                        var  bigmemberBid=checkout.getUrlParam("b");
+                                        var href="/front/wxMyOrder/bidfileDetail/" + orderCode;
+                                        if (bigmemberBid==="1"){
+                                        href="/front/wxMyOrder/aiForecastPackdetail/" + orderCode;
+                                        }
+                                        window.location.replace(href);
+                                        break
+                                    }
+                                    case "integral": {
+                                        window.location.replace("/front/wxMyOrder/integraldetail/" + orderCode)
+                                        break
+                                    }
+                                    case 'dataPack': {
+                                        window.location.replace("/weixin/common/dataPack/orderDetail?order_code=" + orderCode)
+                                        break
+                                    }
+                                    case 'docMember': {
+                                        window.location.replace("/weixin/common/docMember/orderDetail?order_code=" + orderCode)
+                                        break
                                     }
-                                    window.location.replace(href);
-                                    break
-                                }
-                                case "integral": {
-                                    window.location.replace("/front/wxMyOrder/integraldetail/" + orderCode)
-                                    break
-                                }
-                                case 'dataPack': {
-                                    window.location.replace("/weixin/common/dataPack/orderDetail?order_code=" + orderCode)
-                                    break
-                                }
-                                case 'docMember': {
-                                    window.location.replace("/weixin/common/docMember/orderDetail?order_code=" + orderCode)
-                                    break
                                 }
                             }
                         } else {

+ 1 - 1
src/web/templates/weixin/member/memberdetail.html

@@ -475,7 +475,7 @@
                           return (s.id === -1 || sId.indexOf(s.id.toString()) > -1) && v.subject.indexOf(buySubject) > -1
                         })
                         // 将重复的二级服务分类通过名称name去重(目前仅有企业情报监控)
-                        v.serverMap = removeRepeat(v.serverMap)
+                        v.serverMap = removeRepeat(v.serverMap.reverse())
                         return v && v.serverMap.length > 0
                       })
                       buchongbaoHtml += '<table class="service-table"><tr class="thead"><td class="first">服务分类</td><td><div class="service-map"><span class="second">服务项目</span><span class="third">大会员自定义版</span></div></td></tr>'