|
@@ -99,106 +99,104 @@ func entCharge(data *resourcesCenter.ChargeReq) (resp *resourcesCenter.ChargeRes
|
|
|
} else {
|
|
|
return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "未查询到企业数据流量"}
|
|
|
}
|
|
|
- if entNums < data.DeductNum {
|
|
|
- return &resourcesCenter.ChargeResp{
|
|
|
- Code: entity.SuccessCode,
|
|
|
- Message: "",
|
|
|
- Data: &resourcesCenter.SomeInfo{
|
|
|
- ChargeType: 0,
|
|
|
- ChargeResult: 0,
|
|
|
- FailMsg: "企业数据流量包余额不足",
|
|
|
- Num1: entNums,
|
|
|
- Num2: personLimit[0].DataLimit,
|
|
|
- Num3: common.Int64All(common.If(personLimit[0].DataLimit == 0 && personLimit[0].MaxNums == 0, 0, personLimit[0].DataLimit-personLimit[0].ExportNums)),
|
|
|
- Num4: personLimit[0].MaxNums,
|
|
|
- Num5: common.Int64All(common.If(personLimit[0].DataLimit == 0 && personLimit[0].MaxNums == 0, 0, personLimit[0].MaxNums-personLimit[0].AllExportNums)),
|
|
|
+ if data.DeductNum > 0 {
|
|
|
+ if entNums < data.DeductNum {
|
|
|
+ return &resourcesCenter.ChargeResp{
|
|
|
+ Code: entity.SuccessCode,
|
|
|
+ Message: "",
|
|
|
+ Data: &resourcesCenter.SomeInfo{
|
|
|
+ ChargeType: 0,
|
|
|
+ ChargeResult: 0,
|
|
|
+ FailMsg: "企业数据流量包余额不足",
|
|
|
+ Num1: entNums,
|
|
|
+ Num2: personLimit[0].DataLimit,
|
|
|
+ Num3: common.Int64All(common.If(personLimit[0].DataLimit == 0 && personLimit[0].MaxNums == 0, 0, personLimit[0].DataLimit-personLimit[0].ExportNums)),
|
|
|
+ Num4: personLimit[0].MaxNums,
|
|
|
+ Num5: common.Int64All(common.If(personLimit[0].DataLimit == 0 && personLimit[0].MaxNums == 0, 0, personLimit[0].MaxNums-personLimit[0].AllExportNums)),
|
|
|
+ },
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 先更新mgo企业数据总量
|
|
|
+ query := map[string]interface{}{
|
|
|
+ "entid": data.EntId,
|
|
|
+ "plan.current": map[string]interface{}{
|
|
|
+ "$gte": data.DeductNum,
|
|
|
},
|
|
|
}
|
|
|
- }
|
|
|
- // 先更新mgo企业数据总量
|
|
|
- query := map[string]interface{}{
|
|
|
- "entid": data.EntId,
|
|
|
- "plan.current": map[string]interface{}{
|
|
|
- "$gte": data.DeductNum,
|
|
|
- },
|
|
|
- }
|
|
|
- update := map[string]interface{}{
|
|
|
- "$inc": map[string]interface{}{
|
|
|
- "plan.current": -data.DeductNum,
|
|
|
- },
|
|
|
- }
|
|
|
- b = entity.Mgo.Update("user", query, update, false, false)
|
|
|
- if !b {
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "企业余额操作失败"}
|
|
|
- }
|
|
|
- err = jyOrm.Begin()
|
|
|
- //更新限额
|
|
|
- if err != nil {
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "操作失败"}
|
|
|
- }
|
|
|
- var updateNum = int64(0)
|
|
|
- updateNum, err = jyOrm.Table("entniche_export_limit").Where("id = ? and ((data_limit-export_nums>=? && max_nums-all_export_nums>=?) or (data_limit is null && max_nums is null) or (data_limit is null && max_nums-all_export_nums>=?) or (data_limit-export_nums>=? && max_nums is null))", personLimit[0].Id, data.DeductNum, data.DeductNum, data.DeductNum, data.DeductNum).
|
|
|
- Incr("export_nums", data.ExportNum).
|
|
|
- Incr("all_export_nums", data.ExportNum).
|
|
|
- Update(&entity.PersonLimit{})
|
|
|
- if err != nil {
|
|
|
- _ = jyOrm.Rollback()
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "操作失败"}
|
|
|
- }
|
|
|
- if updateNum <= 0 {
|
|
|
- _ = jyOrm.Rollback()
|
|
|
- _ = jyOrm.Table("entniche_export_limit").Select("*").
|
|
|
- Where("ent_id = ? and user_id = ?", data.EntId, data.EntUserId).Find(&personLimit)
|
|
|
- var msg []string
|
|
|
- if personLimit[0].DataLimit < data.DeductNum {
|
|
|
- msg = append(msg, "超出您的每日导出限额")
|
|
|
+ update := map[string]interface{}{
|
|
|
+ "$inc": map[string]interface{}{
|
|
|
+ "plan.current": -data.DeductNum,
|
|
|
+ },
|
|
|
}
|
|
|
- if personLimit[0].MaxNums < data.DeductNum {
|
|
|
- msg = append(msg, "超出您的数据导出总量限额")
|
|
|
+ b = entity.Mgo.Update("user", query, update, false, false)
|
|
|
+ if !b {
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "企业余额操作失败"}
|
|
|
}
|
|
|
- return &resourcesCenter.ChargeResp{
|
|
|
- Code: entity.SuccessCode,
|
|
|
- Message: "",
|
|
|
- Data: &resourcesCenter.SomeInfo{
|
|
|
- ChargeType: 0,
|
|
|
- ChargeResult: 0,
|
|
|
- FailMsg: common.ObjToString(common.If(len(msg) > 0, strings.Join(msg, "、"), "")),
|
|
|
- Num1: entNums,
|
|
|
- Num2: personLimit[0].DataLimit,
|
|
|
- Num3: personLimit[0].DataLimit - personLimit[0].ExportNums,
|
|
|
- Num4: personLimit[0].MaxNums,
|
|
|
- Num5: personLimit[0].MaxNums - personLimit[0].AllExportNums,
|
|
|
- },
|
|
|
+ err = jyOrm.Begin()
|
|
|
+ //更新限额
|
|
|
+ if err != nil {
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "操作失败"}
|
|
|
+ }
|
|
|
+ var updateNum = int64(0)
|
|
|
+ updateNum, err = jyOrm.Table("entniche_export_limit").Where("id = ? and ((data_limit-export_nums>=? && max_nums-all_export_nums>=?) or (data_limit is null && max_nums is null) or (data_limit is null && max_nums-all_export_nums>=?) or (data_limit-export_nums>=? && max_nums is null))", personLimit[0].Id, data.DeductNum, data.DeductNum, data.DeductNum, data.DeductNum).
|
|
|
+ Incr("export_nums", data.ExportNum).
|
|
|
+ Incr("all_export_nums", data.ExportNum).
|
|
|
+ Update(&entity.PersonLimit{})
|
|
|
+ if err != nil {
|
|
|
+ _ = jyOrm.Rollback()
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "操作失败"}
|
|
|
+ }
|
|
|
+ if updateNum <= 0 {
|
|
|
+ _ = jyOrm.Rollback()
|
|
|
+ _ = jyOrm.Table("entniche_export_limit").Select("*").
|
|
|
+ Where("ent_id = ? and user_id = ?", data.EntId, data.EntUserId).Find(&personLimit)
|
|
|
+ var msg []string
|
|
|
+ if personLimit[0].DataLimit < data.DeductNum {
|
|
|
+ msg = append(msg, "超出您的每日导出限额")
|
|
|
+ }
|
|
|
+ if personLimit[0].MaxNums < data.DeductNum {
|
|
|
+ msg = append(msg, "超出您的数据导出总量限额")
|
|
|
+ }
|
|
|
+ return &resourcesCenter.ChargeResp{
|
|
|
+ Code: entity.SuccessCode,
|
|
|
+ Message: "",
|
|
|
+ Data: &resourcesCenter.SomeInfo{
|
|
|
+ ChargeType: 0,
|
|
|
+ ChargeResult: 0,
|
|
|
+ FailMsg: common.ObjToString(common.If(len(msg) > 0, strings.Join(msg, "、"), "")),
|
|
|
+ Num1: entNums,
|
|
|
+ Num2: personLimit[0].DataLimit,
|
|
|
+ Num3: personLimit[0].DataLimit - personLimit[0].ExportNums,
|
|
|
+ Num4: personLimit[0].MaxNums,
|
|
|
+ Num5: personLimit[0].MaxNums - personLimit[0].AllExportNums,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ //保存账号使用明细
|
|
|
+ detailed := entity.Detailed{
|
|
|
+ AccountId: data.UserId,
|
|
|
+ CompanyId: data.EntId,
|
|
|
+ ResourceType: "高级字段包",
|
|
|
+ Number: data.ExportNum,
|
|
|
+ DeductionNumb: data.DeductNum,
|
|
|
+ Name: "数据流包",
|
|
|
+ CreateTime: time.Now().Local(),
|
|
|
+ Remarks: data.Remark,
|
|
|
+ UserType: 0,
|
|
|
+ UserId: data.UserId,
|
|
|
+ AccountType: 1,
|
|
|
+ EntId: data.EntId,
|
|
|
+ }
|
|
|
+ updateNum, err = souceOrm.Table(ConsumeRecord).Insert(&detailed)
|
|
|
+ if err != nil || updateNum <= 0 {
|
|
|
+ _ = jyOrm.Rollback()
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "账号使用明细保存失败"}
|
|
|
+ }
|
|
|
+ err = jyOrm.Commit()
|
|
|
+ if err != nil {
|
|
|
+ _ = jyOrm.Rollback()
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "事务提交失败"}
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //保存账号使用明细
|
|
|
- detailed := entity.Detailed{
|
|
|
- AccountId: data.UserId,
|
|
|
- CompanyId: data.EntId,
|
|
|
- ResourceType: "高级字段包",
|
|
|
- Number: data.ExportNum,
|
|
|
- DeductionNumb: data.DeductNum,
|
|
|
- Name: "数据流包",
|
|
|
- CreateTime: time.Now().Local(),
|
|
|
- Remarks: data.Remark,
|
|
|
- UserType: 0,
|
|
|
- UserId: data.UserId,
|
|
|
- AccountType: 1,
|
|
|
- EntId: data.EntId,
|
|
|
- EntUserId: data.EntUserId,
|
|
|
- }
|
|
|
- if detailed.EntUserId > 0 {
|
|
|
- jyOrm.Table("entniche_user").Select("CONCAT(NAME,'(',phone,')')").Where("id=?", detailed.EntUserId).Get(&detailed.Operator)
|
|
|
- }
|
|
|
- updateNum, err = souceOrm.Table(ConsumeRecord).Insert(&detailed)
|
|
|
- if err != nil || updateNum <= 0 {
|
|
|
- _ = jyOrm.Rollback()
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "账号使用明细保存失败"}
|
|
|
- }
|
|
|
- err = jyOrm.Commit()
|
|
|
- if err != nil {
|
|
|
- _ = jyOrm.Rollback()
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "事务提交失败"}
|
|
|
}
|
|
|
return &resourcesCenter.ChargeResp{
|
|
|
Code: entity.SuccessCode,
|
|
@@ -235,64 +233,67 @@ func personCharge(data *resourcesCenter.ChargeReq) (resp *resourcesCenter.Charge
|
|
|
},
|
|
|
}
|
|
|
}
|
|
|
- var updateNum int64
|
|
|
- err = centerOrm.Begin()
|
|
|
- if err != nil {
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "操作失败"}
|
|
|
- }
|
|
|
- //修改个人账户资源
|
|
|
- balanceList := []entity.Balance{}
|
|
|
- err = centerOrm.Table(AccountResources).
|
|
|
- Select("*").
|
|
|
- Where("accountId= ? and number > 0 and resourceType= ? and endTime >= ?", data.UserId, "高级字段包", now).
|
|
|
- OrderBy("endTime").
|
|
|
- Find(&balanceList)
|
|
|
- if err != nil {
|
|
|
- _ = centerOrm.Rollback()
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "个人账号资源查询失败"}
|
|
|
- }
|
|
|
- for _, value := range balanceList {
|
|
|
- if value.Number > data.DeductNum {
|
|
|
- value.Number = value.Number - data.DeductNum
|
|
|
- data.DeductNum = 0
|
|
|
- } else {
|
|
|
- data.DeductNum = data.DeductNum - value.Number
|
|
|
- value.Number = 0
|
|
|
+ // 实际扣费条数
|
|
|
+ if data.DeductNum > 0 {
|
|
|
+ var updateNum int64
|
|
|
+ err = centerOrm.Begin()
|
|
|
+ if err != nil {
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "操作失败"}
|
|
|
}
|
|
|
- updateNum, err = centerOrm.Table(AccountResources).
|
|
|
- Cols("number").ID(value.Id).
|
|
|
- Update(&value)
|
|
|
- if err != nil || updateNum <= 0 {
|
|
|
+ //修改个人账户资源
|
|
|
+ balanceList := []entity.Balance{}
|
|
|
+ err = centerOrm.Table(AccountResources).
|
|
|
+ Select("*").
|
|
|
+ Where("accountId= ? and number > 0 and resourceType= ? and endTime >= ?", data.UserId, "高级字段包", now).
|
|
|
+ OrderBy("endTime").
|
|
|
+ Find(&balanceList)
|
|
|
+ if err != nil {
|
|
|
_ = centerOrm.Rollback()
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "修改账户失败"}
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "个人账号资源查询失败"}
|
|
|
}
|
|
|
- if data.DeductNum == 0 {
|
|
|
- break
|
|
|
+ for _, value := range balanceList {
|
|
|
+ if value.Number > data.DeductNum {
|
|
|
+ value.Number = value.Number - data.DeductNum
|
|
|
+ data.DeductNum = 0
|
|
|
+ } else {
|
|
|
+ data.DeductNum = data.DeductNum - value.Number
|
|
|
+ value.Number = 0
|
|
|
+ }
|
|
|
+ updateNum, err = centerOrm.Table(AccountResources).
|
|
|
+ Cols("number").ID(value.Id).
|
|
|
+ Update(&value)
|
|
|
+ if err != nil || updateNum <= 0 {
|
|
|
+ _ = centerOrm.Rollback()
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "修改账户失败"}
|
|
|
+ }
|
|
|
+ if data.DeductNum == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //保存账号使用明细
|
|
|
+ detailed := entity.Detailed{
|
|
|
+ AccountId: data.UserId,
|
|
|
+ CompanyId: data.EntId,
|
|
|
+ ResourceType: "高级字段包",
|
|
|
+ Number: data.ExportNum,
|
|
|
+ DeductionNumb: data.DeductNum,
|
|
|
+ Name: "数据流包",
|
|
|
+ CreateTime: time.Now().Local(),
|
|
|
+ Remarks: data.Remark,
|
|
|
+ UserType: 0,
|
|
|
+ UserId: data.UserId,
|
|
|
+ AccountType: 1,
|
|
|
+ EntId: data.EntId,
|
|
|
+ }
|
|
|
+ updateNum, err = centerOrm.Table(ConsumeRecord).Insert(&detailed)
|
|
|
+ if err != nil || updateNum <= 0 {
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "账号使用明细保存失败"}
|
|
|
+ }
|
|
|
+ err = centerOrm.Commit()
|
|
|
+ if err != nil {
|
|
|
+ _ = jyOrm.Rollback()
|
|
|
+ return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "事务提交失败"}
|
|
|
}
|
|
|
- }
|
|
|
- //保存账号使用明细
|
|
|
- detailed := entity.Detailed{
|
|
|
- AccountId: data.UserId,
|
|
|
- CompanyId: data.EntId,
|
|
|
- ResourceType: "高级字段包",
|
|
|
- Number: data.ExportNum,
|
|
|
- DeductionNumb: data.DeductNum,
|
|
|
- Name: "数据流包",
|
|
|
- CreateTime: time.Now().Local(),
|
|
|
- Remarks: data.Remark,
|
|
|
- UserType: 0,
|
|
|
- UserId: data.UserId,
|
|
|
- AccountType: 1,
|
|
|
- EntId: data.EntId,
|
|
|
- }
|
|
|
- updateNum, err = centerOrm.Table(ConsumeRecord).Insert(&detailed)
|
|
|
- if err != nil || updateNum <= 0 {
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "账号使用明细保存失败"}
|
|
|
- }
|
|
|
- err = centerOrm.Commit()
|
|
|
- if err != nil {
|
|
|
- _ = jyOrm.Rollback()
|
|
|
- return &resourcesCenter.ChargeResp{Code: entity.ErrorCode, Message: "事务提交失败"}
|
|
|
}
|
|
|
return &resourcesCenter.ChargeResp{
|
|
|
Code: entity.SuccessCode,
|