|
@@ -3,6 +3,7 @@ package subvip
|
|
|
import (
|
|
|
"app.yhyue.com/moapp/jybase/common"
|
|
|
"app.yhyue.com/moapp/jybase/date"
|
|
|
+ "app.yhyue.com/moapp/jybase/mongodb"
|
|
|
"context"
|
|
|
"fmt"
|
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
@@ -15,47 +16,109 @@ import (
|
|
|
)
|
|
|
|
|
|
func (p jySubVipProduct) OpenService(ctx context.Context) error {
|
|
|
- record, err := g.DB().GetOne(ctx, fmt.Sprintf("SELECT * FROM %s WHERE order_code =?", consts.OrderListTableName), p.param.OrderCode)
|
|
|
+ record, err := g.DB().GetOne(ctx, fmt.Sprintf("SELECT * FROM %s WHERE order_code =?", consts.OrderListTableName), p.OrderDetail.OrderCode)
|
|
|
if err != nil || record.IsEmpty() {
|
|
|
return errors.Wrap(err, "超级订阅开通服务异常:未知订单编号")
|
|
|
}
|
|
|
var (
|
|
|
buySubject = gconv.Int(record["buy_subject"])
|
|
|
- doType = p.param.RecordPayType
|
|
|
|
|
|
- account = p.param.SGiftAccountNumber + p.param.SPayAccountNumber
|
|
|
- areaCount = -1
|
|
|
+ doType = p.OrderDetail.RecordPayType
|
|
|
+ filter = p.OrderDetail.Filter
|
|
|
+ vipStartTime, vipEndTime time.Time
|
|
|
)
|
|
|
|
|
|
switch buySubject {
|
|
|
case 1: //个人
|
|
|
-
|
|
|
+ uData, _, _, err := jyutil.GetCreateUserData(p.OrderDetail.Phone, "", false)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("个人超级订阅开通服务出错:entUserId参数异常")
|
|
|
+ }
|
|
|
+ var (
|
|
|
+ mgoUid = mongodb.BsonIdToSId(uData["_id"])
|
|
|
+ setting = map[string]interface{}{}
|
|
|
+ )
|
|
|
+ switch doType {
|
|
|
+ case 1, 4: //购买,试用
|
|
|
+ vipStartTime, vipEndTime = utility.GetStartAndEndTime(time.Now(), utility.DateComp{
|
|
|
+ Num: filter.BuyCycle,
|
|
|
+ Unit: filter.BuyType,
|
|
|
+ }, utility.DateComp{
|
|
|
+ Num: filter.GiftCycle,
|
|
|
+ Unit: filter.GiftType,
|
|
|
+ })
|
|
|
+ setting = map[string]interface{}{
|
|
|
+ "o_vipjy.i_trial": -1, //已激活试用
|
|
|
+ "o_vipjy.o_area": -1, //设置地区
|
|
|
+ "o_vipjy.o_buyset": g.Map{
|
|
|
+ "upgrade": 1,
|
|
|
+ "areacount": -1,
|
|
|
+ "newcitys": []int{},
|
|
|
+ "buyerclasscount": -1,
|
|
|
+ }, //购买内容 城市、省份、行业数量
|
|
|
+ "l_vip_starttime": vipStartTime.Unix(), //开始时间
|
|
|
+ "l_vip_endtime": vipEndTime.Unix(), //结束时间
|
|
|
+ "i_vip_status": common.If(doType == 1, 2, 1), //1试用 2正式
|
|
|
+ "i_vip_expire_tip": 0, //消息提示初始化
|
|
|
+ "o_vipjy.a_buyerclass": []interface{}{}, //设置行业
|
|
|
+ }
|
|
|
+ case 2: //续费
|
|
|
+ entTimeUnix := gconv.Int64(uData["l_vip_endtime"])
|
|
|
+ var newStartTime time.Time
|
|
|
+ if entTimeUnix < time.Now().Unix() { //原服务已过期
|
|
|
+ setting["i_vip_status"] = 2
|
|
|
+ newStartTime = time.Now()
|
|
|
+ } else { //原服务未过期
|
|
|
+ //开始时间为:原服务结束日期+1天
|
|
|
+ newStartTime = time.Unix(entTimeUnix, 0).AddDate(0, 0, 1)
|
|
|
+ }
|
|
|
+ vipStartTime, vipEndTime = utility.GetStartAndEndTime(newStartTime, utility.DateComp{
|
|
|
+ Num: filter.BuyCycle,
|
|
|
+ Unit: filter.BuyType,
|
|
|
+ }, utility.DateComp{
|
|
|
+ Num: filter.GiftCycle,
|
|
|
+ Unit: filter.GiftType,
|
|
|
+ })
|
|
|
+ setting["l_vip_endtime"] = vipEndTime
|
|
|
+ case 3: //升级
|
|
|
+ //areaCount account 需要包含之前购买的数量
|
|
|
+ _, vipStartTime, vipEndTime, err = getLinkFilter(context.Background(), p.OrderDetail.LinkedOrderId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ setting["o_vipjy.o_buyset.areacount"] = filter.FinalAccountCount
|
|
|
+ default:
|
|
|
+ return fmt.Errorf("个人超级订阅开通服务出错:未知操作类型")
|
|
|
+ }
|
|
|
+ if !jyutil.Compatible.Update(mgoUid, g.Map{"$set": setting}) {
|
|
|
+ return fmt.Errorf("个人超级订阅开通服务出错:数据库更新出错")
|
|
|
+ }
|
|
|
case 2: //企业
|
|
|
var (
|
|
|
companyName = gconv.String(record["company_name"])
|
|
|
)
|
|
|
- _, entId, userPositionId, err := jyutil.GetCreateUserData(p.param.Phone, companyName, true) //查询企业,不存在创建企业
|
|
|
+ _, entId, userPositionId, err := jyutil.GetCreateUserData(p.OrderDetail.Phone, companyName, true) //查询企业,不存在创建企业
|
|
|
if err != nil {
|
|
|
- return errors.Wrap(err, "超级订阅开通服务出错:获取企业信息异常")
|
|
|
+ return errors.Wrap(err, "企业超级订阅开通服务出错:获取企业信息异常")
|
|
|
}
|
|
|
identity := jyutil.Middleground.UserCenter.IdentityByPositionId(userPositionId)
|
|
|
if identity.EntUserId <= 0 {
|
|
|
- return fmt.Errorf("超级订阅开通服务出错:entUserId参数异常")
|
|
|
+ return fmt.Errorf("企业超级订阅开通服务出错:entUserId参数异常")
|
|
|
}
|
|
|
if doType == 1 || doType == 4 { //新购
|
|
|
vipStartTime, vipEndTime := utility.GetStartAndEndTime(time.Now(), utility.DateComp{
|
|
|
- Num: p.param.PayCycle,
|
|
|
- Unit: p.param.PayCycleType,
|
|
|
+ Num: filter.BuyCycle,
|
|
|
+ Unit: filter.BuyType,
|
|
|
}, utility.DateComp{
|
|
|
- Num: p.param.GifCycle,
|
|
|
- Unit: p.param.GifCycleType,
|
|
|
+ Num: filter.GiftCycle,
|
|
|
+ Unit: filter.GiftType,
|
|
|
})
|
|
|
- _, err := vipEntPower(ctx, entId, identity.EntUserId, doType, account, areaCount, p.param.LinkedOrderId, vipStartTime, vipEndTime)
|
|
|
+ _, err := vipEntPower(ctx, entId, identity.EntUserId, doType, filter.FinalAccountCount, filter.FinalAreaCount, p.OrderDetail.LinkedOrderId, vipStartTime, vipEndTime)
|
|
|
if err != nil {
|
|
|
- return errors.Wrap(err, fmt.Sprintf("超级订阅开通服务异常:vipEntPower 创建企业授权信息失败:%s", companyName))
|
|
|
+ return errors.Wrap(err, fmt.Sprintf("企业超级订阅开通服务异常:vipEntPower 创建企业授权信息失败:%s", companyName))
|
|
|
}
|
|
|
} else if doType == 2 { //续费
|
|
|
- _, _, entTime, err := getLinkFilter(context.Background(), p.param.LinkedOrderId)
|
|
|
+ _, _, entTime, err := getLinkFilter(context.Background(), p.OrderDetail.LinkedOrderId)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -68,32 +131,39 @@ func (p jySubVipProduct) OpenService(ctx context.Context) error {
|
|
|
}
|
|
|
|
|
|
vipStartTime, vipEndTime := utility.GetStartAndEndTime(newStartTime, utility.DateComp{
|
|
|
- Num: p.param.PayCycle,
|
|
|
- Unit: p.param.PayCycleType,
|
|
|
+ Num: filter.BuyCycle,
|
|
|
+ Unit: filter.BuyType,
|
|
|
}, utility.DateComp{
|
|
|
- Num: p.param.GifCycle,
|
|
|
- Unit: p.param.GifCycleType,
|
|
|
+ Num: filter.GiftCycle,
|
|
|
+ Unit: filter.GiftType,
|
|
|
})
|
|
|
- _, err = vipEntPower(ctx, entId, identity.EntUserId, doType, account, areaCount, p.param.LinkedOrderId, vipStartTime, vipEndTime)
|
|
|
+ _, err = vipEntPower(ctx, entId, identity.EntUserId, doType, filter.FinalAccountCount, filter.FinalAreaCount, p.OrderDetail.LinkedOrderId, vipStartTime, vipEndTime)
|
|
|
if err != nil {
|
|
|
- return errors.Wrap(err, fmt.Sprintf("超级订阅续费服务异常:vipEntPower 创建企业授权信息失败:%s", companyName))
|
|
|
+ return errors.Wrap(err, fmt.Sprintf("企业超级订阅续费服务异常:vipEntPower 创建企业授权信息失败:%s", companyName))
|
|
|
}
|
|
|
} else if doType == 3 { //升级
|
|
|
//areaCount account 需要包含之前购买的数量
|
|
|
- filter, startTime, entTime, err := getLinkFilter(context.Background(), p.param.LinkedOrderId)
|
|
|
+ _, vipStartTime, vipEndTime, err = getLinkFilter(context.Background(), p.OrderDetail.LinkedOrderId)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- //此订单filter??
|
|
|
- _, err = vipEntPower(ctx, entId, identity.EntUserId, doType, filter.FinalAccountCount, filter.FinalAreaCount, p.param.LinkedOrderId, startTime, entTime)
|
|
|
+ _, err = vipEntPower(ctx, entId, identity.EntUserId, doType, filter.FinalAccountCount, filter.FinalAreaCount, p.OrderDetail.LinkedOrderId, vipStartTime, vipEndTime)
|
|
|
if err != nil {
|
|
|
- return errors.Wrap(err, fmt.Sprintf("超级订阅续费服务异常:vipEntPower 创建企业授权信息失败:%s", companyName))
|
|
|
+ return errors.Wrap(err, fmt.Sprintf("企业超级订阅续费服务异常:vipEntPower 创建企业授权信息失败:%s", companyName))
|
|
|
}
|
|
|
}
|
|
|
jyutil.ClearBigVipUserPower(ctx, gconv.String(userPositionId))
|
|
|
default:
|
|
|
- return fmt.Errorf("超级订阅开通服务异常:未知购买主体")
|
|
|
+ return fmt.Errorf("企业超级订阅开通服务异常:未知购买主体")
|
|
|
}
|
|
|
+
|
|
|
+ //更新订单明细
|
|
|
+ _, err = g.DB().Update(ctx, consts.OrderDetailTableName, g.Map{
|
|
|
+ "service_starttime": vipStartTime.Format(time.DateTime),
|
|
|
+ "service_endtime": vipEndTime.Format(time.DateTime),
|
|
|
+ "is_service_open": 1,
|
|
|
+ }, "")
|
|
|
+
|
|
|
return nil
|
|
|
}
|
|
|
|