|
@@ -2,15 +2,18 @@ package service
|
|
|
|
|
|
import (
|
|
|
"bytes"
|
|
|
+ "context"
|
|
|
"database/sql"
|
|
|
"encoding/base64"
|
|
|
"fmt"
|
|
|
+ "github.com/gogf/gf/v2/frame/g"
|
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
|
"jy/src/jfw/modules/subscribepay/src/config"
|
|
|
"jy/src/jfw/modules/subscribepay/src/entity"
|
|
|
"jy/src/jfw/modules/subscribepay/src/util"
|
|
|
"log"
|
|
|
"regexp"
|
|
|
+ "sort"
|
|
|
"strings"
|
|
|
"time"
|
|
|
|
|
@@ -27,6 +30,7 @@ import (
|
|
|
"app.yhyue.com/moapp/jybase/usercenter"
|
|
|
"app.yhyue.com/moapp/jypkg/common/src/qfw/util/dataexport"
|
|
|
"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
|
|
|
+ pcc "bp.jydev.jianyu360.cn/BaseService/powerCheckCenter/rpc/pb"
|
|
|
"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
|
|
|
)
|
|
|
|
|
@@ -100,11 +104,11 @@ func (this *UserAccount) AccountShow() {
|
|
|
if userId == "" {
|
|
|
return nil, fmt.Errorf("未登录")
|
|
|
}
|
|
|
- nickname, vipType := gconv.String(sessVal["userName"]), "注册用户"
|
|
|
- var endTime int64
|
|
|
- //来源于接口/user/getSimpleData
|
|
|
- phone, _ := sessVal["phone"].(string)
|
|
|
- nickname, _ = qutil.If(sessVal["s_nickname"] != nil, sessVal["s_nickname"], sessVal["app_name"]).(string)
|
|
|
+ var (
|
|
|
+ //来源于接口/user/getSimpleData
|
|
|
+ nickname, _ = qutil.If(sessVal["s_nickname"] != nil, sessVal["s_nickname"], sessVal["app_name"]).(string)
|
|
|
+ phone, _ = sessVal["phone"].(string)
|
|
|
+ )
|
|
|
if nickname == "" {
|
|
|
var PhoneReg = regexp.MustCompile(`^(100\d{8}|1[3-9]\d{9})$`)
|
|
|
if PhoneReg.MatchString(phone) {
|
|
@@ -112,31 +116,167 @@ func (this *UserAccount) AccountShow() {
|
|
|
}
|
|
|
}
|
|
|
powerRes := config.Middleground.PowerCheckCenter.Check("10000", gconv.String(sessVal["mgoUserId"]), gconv.Int64(sessVal["base_user_id"]), gconv.Int64(sessVal["accountId"]), gconv.Int64(sessVal["entId"]), gconv.Int64(sessVal["positionType"]), gconv.Int64(sessVal["positionId"]))
|
|
|
- if powerRes.Vip.Status > 0 && powerRes.Vip.GetEndTime() > endTime {
|
|
|
- vipType, endTime = "超级订阅", powerRes.Vip.GetEndTime()
|
|
|
- }
|
|
|
- if powerRes.Member.Status > 0 && powerRes.Member.GetEndTime() > endTime {
|
|
|
- vipType, endTime = "大会员", powerRes.Member.GetEndTime()
|
|
|
- }
|
|
|
- if powerRes.Entniche.Status > 0 && powerRes.Entniche.GetEndTime() > endTime {
|
|
|
- vipType, endTime = "商机管理", powerRes.Entniche.GetEndTime()
|
|
|
- }
|
|
|
- if powerRes.Free.PpStatus > 0 && powerRes.Free.PpEndTime > endTime {
|
|
|
- vipType, endTime = "省份订阅包", powerRes.Free.GetPpEndTime()
|
|
|
- }
|
|
|
rData := map[string]interface{}{
|
|
|
- "vipType": vipType,
|
|
|
"nickname": nickname,
|
|
|
- }
|
|
|
- if endTime > 0 {
|
|
|
- rData["vipEntTime"] = time.Unix(endTime, 0).Format("2006-01-02")
|
|
|
+ "list": getAccountVipAttr(this.Session(), powerRes),
|
|
|
}
|
|
|
return rData, nil
|
|
|
}()
|
|
|
-
|
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
|
}
|
|
|
|
|
|
+type VipDetail struct {
|
|
|
+ Name string `json:"name"`
|
|
|
+ EndTime int64 `json:"endTime,omitempty"`
|
|
|
+ Attr map[string]interface{} `json:"attr,omitempty"`
|
|
|
+}
|
|
|
+
|
|
|
+var memberCodeNameMapping = map[int64]string{
|
|
|
+ 1: "专家版",
|
|
|
+ 2: "智慧版",
|
|
|
+ 3: "商机版",
|
|
|
+ 4: "试用版",
|
|
|
+ 5: "自定义",
|
|
|
+ 6: "商机版2.0",
|
|
|
+ 7: "专家版2.0",
|
|
|
+}
|
|
|
+
|
|
|
+func init() {
|
|
|
+ memberComboRes := util.Mysql.Find("bigmember_combo", nil, "id,s_name", "", -1, -1)
|
|
|
+ if memberComboRes != nil && len(*memberComboRes) > 0 {
|
|
|
+ for _, m := range *memberComboRes {
|
|
|
+ memberCodeNameMapping[gconv.Int64(m["id"])] = gconv.String(m["s_name"])
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func getAccountVipAttr(session *httpsession.Session, powerRes *pcc.CheckResp) (rData []*VipDetail) {
|
|
|
+ var (
|
|
|
+ userid = qutil.ObjToString(session.Get("userId"))
|
|
|
+ )
|
|
|
+ if !(powerRes.Vip.Status > 0 || powerRes.Member.Status > 0 || powerRes.Entniche.Status > 0 || powerRes.Free.PpStatus > 0) {
|
|
|
+ //注册用户展示超级订阅最优活动展示
|
|
|
+ subVipActMsg := func() string {
|
|
|
+ productInfoList, msg := entity.JyCommodityStruct.Product(101, 1, userid, &g.Map{"orderType": 1, "areaCount": 1}, "VIP订阅", "", session)
|
|
|
+ if msg != "" || productInfoList == nil {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ for _, info := range *productInfoList { //商品
|
|
|
+ for _, msg := range info.Sku { //规格
|
|
|
+ var (
|
|
|
+ activityId = msg.ActivityId
|
|
|
+ lotteryId = msg.LotterId
|
|
|
+ )
|
|
|
+ for _, act := range msg.Activity { //活动
|
|
|
+ if act.Id != activityId {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ for _, dis := range act.Discount { //卡券
|
|
|
+ if dis.LotteryId != lotteryId {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ switch dis.Types { //0满减、1折扣券、2满赠、3促销、4限时折扣、5限时减免
|
|
|
+ case 0, 5, 3: //促销一口价/满减:限时立减**元
|
|
|
+ if dis.Types == 3 {
|
|
|
+ return fmt.Sprintf("限时立减%d元", gconv.Int((msg.OriginalPrice-dis.PromotionalPrice)/100))
|
|
|
+ } else {
|
|
|
+ return fmt.Sprintf("限时立减%d元", gconv.Int(dis.Reduce/100))
|
|
|
+ }
|
|
|
+ case 1, 4:
|
|
|
+ var final = dis.Discount * 10
|
|
|
+ if gconv.Float64(gconv.Int64(final)) == final {
|
|
|
+ return fmt.Sprintf("限时%d折", gconv.Int64(final))
|
|
|
+ } else {
|
|
|
+ return fmt.Sprintf("限时%.1f折", final)
|
|
|
+ }
|
|
|
+ case 2:
|
|
|
+ var t string
|
|
|
+ switch dis.TimeType {
|
|
|
+ case 1:
|
|
|
+ t = "天"
|
|
|
+ case 2:
|
|
|
+ t = "个月"
|
|
|
+ case 3:
|
|
|
+ t = "年"
|
|
|
+ case 8:
|
|
|
+ t = "季"
|
|
|
+ }
|
|
|
+ return fmt.Sprintf("限时赠送%d%s", dis.Time, t)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ""
|
|
|
+ }()
|
|
|
+ return []*VipDetail{{Name: "注册用户", Attr: g.Map{"subVipActMsg": subVipActMsg}}}
|
|
|
+ }
|
|
|
+ //付费用户根据结束时间排序展示会员,省份订阅包和其他产品并存,省份订阅包不展
|
|
|
+ if powerRes.Member.Status > 0 { //大会员
|
|
|
+ rData = append(rData, &VipDetail{Name: fmt.Sprintf("大会员%s", memberCodeNameMapping[powerRes.Member.Status]), EndTime: powerRes.Member.GetEndTime(), Attr: g.Map{
|
|
|
+ "h5": g.Cfg().MustGet(context.TODO(), "consultingVipMemberH5", "https://host.huiju.cool/p/18dea1").String(),
|
|
|
+ "app": g.Cfg().MustGet(context.TODO(), "consultingVipMemberApp", "https://host.huiju.cool/p/f01de").String(),
|
|
|
+ "pc": g.Cfg().MustGet(context.TODO(), "consultingVipMemberPc", "https://www.jianyu360.cn/hjpc/dhyxfzxxshd").String(),
|
|
|
+ }})
|
|
|
+ }
|
|
|
+ if powerRes.Entniche.Status > 0 {
|
|
|
+ rData = append(rData, &VipDetail{Name: "商机管理", EndTime: powerRes.Entniche.GetEndTime()})
|
|
|
+ }
|
|
|
+ if powerRes.Vip.Status > 0 {
|
|
|
+ buyed := func() bool {
|
|
|
+ cacheKey := fmt.Sprintf("jypay_svip_buyed_%s", userid)
|
|
|
+ v := redis.GetInt("newother", cacheKey)
|
|
|
+ if v == 0 {
|
|
|
+ v = qutil.If(util.Mysql.Count("dataexport_order", map[string]interface{}{
|
|
|
+ "product_type": "VIP订阅",
|
|
|
+ "user_id": userid,
|
|
|
+ }) == 0, -1, 1).(int)
|
|
|
+ redis.Put("newother", cacheKey, v, 60*5)
|
|
|
+ }
|
|
|
+ return v == 1
|
|
|
+ }()
|
|
|
+ var buyMsg string
|
|
|
+ if powerRes.Vip.Upgrade == 1 {
|
|
|
+ buyMsg = qutil.If(powerRes.Vip.Areacount == -1, "全国", fmt.Sprintf("%d个省", powerRes.Vip.Areacount)).(string)
|
|
|
+ } else {
|
|
|
+ if powerRes.Vip.Areacount == -1 {
|
|
|
+ buyMsg = "全国"
|
|
|
+ } else {
|
|
|
+ if powerRes.Vip.Areacount > 0 {
|
|
|
+ buyMsg += fmt.Sprintf("%d个省", powerRes.Vip.Areacount)
|
|
|
+ }
|
|
|
+ var cityTotal int64
|
|
|
+ for _, num := range powerRes.Vip.NewCitys {
|
|
|
+ cityTotal += num
|
|
|
+ }
|
|
|
+ if cityTotal > 0 {
|
|
|
+ buyMsg += fmt.Sprintf("%d个市", cityTotal)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ rData = append(rData, &VipDetail{Name: "超级订阅", EndTime: powerRes.Vip.GetEndTime(), Attr: g.Map{
|
|
|
+ "renew": powerRes.Vip.Upgrade == 1 && buyed, //是否有购买订单
|
|
|
+ "upgrade": (powerRes.Vip.Upgrade == 0 || powerRes.Vip.Areacount != -1) && buyed,
|
|
|
+ "buyMsg": buyMsg,
|
|
|
+ }})
|
|
|
+ }
|
|
|
+ if powerRes.Free.PpStatus > 0 && len(rData) == 0 {
|
|
|
+ rData = append(rData, &VipDetail{Name: "省份订阅包", EndTime: powerRes.Free.GetPpEndTime(), Attr: g.Map{
|
|
|
+ "upgrade": powerRes.Free.PpAreaCount != -1,
|
|
|
+ "renew": true,
|
|
|
+ "buyMsg": qutil.If(powerRes.Free.PpAreaCount == -1, "全国", fmt.Sprintf("%d个省", powerRes.Free.PpAreaCount)),
|
|
|
+ }})
|
|
|
+ }
|
|
|
+ //根据结束时间排序
|
|
|
+ if len(rData) > 1 {
|
|
|
+ sort.Slice(rData, func(i, j int) bool {
|
|
|
+ return rData[i].EndTime > rData[j].EndTime
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return rData
|
|
|
+}
|
|
|
+
|
|
|
// 我的页面 获取基本信息
|
|
|
// 手机号 邮箱 头像 昵称 超级订阅 大会员 用户加密id
|
|
|
func (this *UserAccount) GetAccountInfo() {
|