|
@@ -25,7 +25,7 @@ type VipSimpleMsg struct {
|
|
|
Industry []string `json:"industry"` //行业
|
|
|
Cyclecount int `json:"cyclecount"` //日期数量
|
|
|
Cycleunit int `json:"cycleunit"` //日期单位
|
|
|
- OrderType int `json:"ordertype"` //类型 1:订单 2:续费 3:立即升级 4:下月升级
|
|
|
+ OrderType int `json:"ordertype"` //类型 1:订单 2:续费 3:立即升级 4:下月升级 5:即将到期(升降级)
|
|
|
}
|
|
|
|
|
|
//购买内容
|
|
@@ -99,7 +99,7 @@ func (this *vipSubscribeStruct) PayCallBack(param *CallBackParam) bool {
|
|
|
flag = JyVipSubStruct.RenewSubVip(userid, qutil.ObjToString((*orderdata)["vip_endtime"]))
|
|
|
} else if vmsg.OrderType == 3 { //立即升级
|
|
|
flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_starttime"]), qutil.ObjToString((*orderdata)["vip_endtime"]), true)
|
|
|
- } else if vmsg.OrderType == 4 { //下月升级
|
|
|
+ } else if vmsg.OrderType == 4 || vmsg.OrderType == 5 { //下月升级
|
|
|
flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_starttime"]), qutil.ObjToString((*orderdata)["vip_endtime"]), false)
|
|
|
}
|
|
|
//支付成功后 其他未支付vip订阅订单 变为已取消
|
|
@@ -118,14 +118,11 @@ func (this *vipSubscribeStruct) StartSubVip(userId string, vmsg VipSimpleMsg, st
|
|
|
buyset.AreaCount = -1 //城市数量
|
|
|
buyset.BuyerclassCount = -1 //行业数量
|
|
|
}
|
|
|
- //计算服务时间
|
|
|
if !util.MQFW.UpdateById("user", userId,
|
|
|
bson.M{"$set": bson.M{
|
|
|
"o_vipjy.i_trial": -1, //已激活试用
|
|
|
"o_vipjy.o_area": vmsg.Area, //设置地区
|
|
|
"o_vipjy.a_buyerclass": vmsg.Industry, //设置行业
|
|
|
- "o_vipjy.i_cycleunit": vmsg.Cycleunit, //购买单位
|
|
|
- "o_vipjy.i_cyclecount": vmsg.Cyclecount, //购买时长
|
|
|
"o_vipjy.o_buyset": buyset, //购买内容 城市、省份、行业数量
|
|
|
"l_vip_starttime": startTime.Unix(), //开始时间
|
|
|
"l_vip_endtime": endTime.Unix(), //结束时间
|
|
@@ -164,21 +161,18 @@ func (this *vipSubscribeStruct) UpgradeSubVip(userId string, vmsg VipSimpleMsg,
|
|
|
if isNow {
|
|
|
return util.MQFW.UpdateById("user", userId,
|
|
|
bson.M{"$set": bson.M{
|
|
|
- "o_vipjy.o_area": vmsg.Area, //设置地区
|
|
|
- "o_vipjy.a_buyerclass": vmsg.Industry, //设置行业
|
|
|
- "o_vipjy.i_cycleunit": vmsg.Cycleunit, //购买单位
|
|
|
- "o_vipjy.i_cyclecount": vmsg.Cyclecount, //购买时长
|
|
|
+ "o_vipjy.o_area": vmsg.Area, //设置地区
|
|
|
+ "o_vipjy.a_buyerclass": vmsg.Industry, //设置行业
|
|
|
"o_vipjy.o_buyset": buyset,
|
|
|
"l_vip_endtime": endTime.Unix(),
|
|
|
"i_vip_status": 2,
|
|
|
- // "l_vip_starttime": startTime.Unix(),
|
|
|
}})
|
|
|
} else {
|
|
|
if !util.MQFW.UpdateById("user", userId,
|
|
|
bson.M{"$set": bson.M{
|
|
|
"l_vip_endtime": endTime.Unix(),
|
|
|
}}) {
|
|
|
- log.Println("%s更新结束日期出错", userId)
|
|
|
+ log.Printf("%s更新结束%d日期出错\n", userId, endTime.Unix())
|
|
|
return false
|
|
|
}
|
|
|
return util.MQFW.Save("vip_upgrade",
|
|
@@ -236,6 +230,26 @@ func (this *vipSubscribeStruct) CanTrial(userId string) bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
+//校验订单是否可以创建是否合法,返回user表查询信息
|
|
|
+func (this *vipSubscribeStruct) OrderCheck(userId string, orderType int) (bool, *map[string]interface{}) {
|
|
|
+ res, ok := util.MQFW.FindById("user", userId, `{"l_vip_endtime":1,"i_vip_status":1}`)
|
|
|
+ if !ok || len(*res) == 0 {
|
|
|
+ return false, nil
|
|
|
+ }
|
|
|
+ switch orderType { //1:订单 2:续费 3:立即升级 4:下月升级 5:即将到期(升降级)
|
|
|
+ case 1: //新订单 用户不能处于vip状态
|
|
|
+ vipStatus := qutil.IntAll((*res)["i_vip_status"])
|
|
|
+ return vipStatus != 2, res
|
|
|
+ case 5: //是否在到期结束三天内
|
|
|
+ timeStamp := qutil.Int64All((*res)["l_vip_endtime"])
|
|
|
+ if timeStamp == 0 {
|
|
|
+ return false, nil
|
|
|
+ }
|
|
|
+ return time.Now().AddDate(0, 0, 3).After(time.Unix(timeStamp, 0)), res
|
|
|
+ }
|
|
|
+ return false, nil
|
|
|
+}
|
|
|
+
|
|
|
//获取省份,城市,行业购买内容
|
|
|
//[省份,城市,行业]
|
|
|
func (this *vipSubscribeStruct) GetBuySet(userId string) (*SubvipBuySet, error) {
|
|
@@ -256,7 +270,7 @@ func (this *vipSubscribeStruct) SubEditCheckArea(area *map[string]interface{}, b
|
|
|
if buySet.AreaCount == -1 { //购买全国
|
|
|
return true
|
|
|
}
|
|
|
- if len(*area)==0{ //选择全国
|
|
|
+ if len(*area) == 0 { //选择全国
|
|
|
return false
|
|
|
}
|
|
|
pCount := 0
|