|
@@ -15,7 +15,6 @@ import (
|
|
|
|
|
|
"github.com/baiy/Cadmin-server-go/admin"
|
|
|
"github.com/baiy/Cadmin-server-go/system/utils"
|
|
|
- "go.mongodb.org/mongo-driver/bson"
|
|
|
)
|
|
|
|
|
|
// SalePersonList 补录销售信息列表
|
|
@@ -367,299 +366,108 @@ func OrdersExamine(context *admin.Context) (interface{}, error) {
|
|
|
//查询订单
|
|
|
order := util.JysqlDB.FindOne("dataexport_order", map[string]interface{}{"order_code": param.OrderCode}, "id,audit_status,order_status,buy_subject,sale_time,user_phone,company_name,product_type,vip_type,vip_endtime,vip_starttime,filter", "")
|
|
|
if order != nil && len(*order) > 0 {
|
|
|
- oldState := cm.IntAll((*order)["audit_status"])
|
|
|
- newState := 1
|
|
|
- operatorType := 2
|
|
|
- if oldState == 3 {
|
|
|
- return nil, errors.New("订单审核已完成,无需审批")
|
|
|
+ return nil, errors.New("没有查询到订单信息")
|
|
|
+ }
|
|
|
+ oldState := cm.IntAll((*order)["audit_status"])
|
|
|
+ newState := 1
|
|
|
+ operatorType := 2
|
|
|
+ if oldState == 3 {
|
|
|
+ return nil, errors.New("订单审核已完成,无需审批")
|
|
|
+ }
|
|
|
+ if param.State == 1 { //审核通过
|
|
|
+ if oldState == 1 { //记录为待审核状态
|
|
|
+ newState = 2
|
|
|
+ } else if oldState == 2 { //记录为一审通过状态
|
|
|
+ newState = 4
|
|
|
+ operatorType = 3
|
|
|
+ } else if oldState == 4 {
|
|
|
+ newState = 3
|
|
|
+ operatorType = 5 //三审
|
|
|
}
|
|
|
- if param.State == 1 { //审核通过
|
|
|
- if oldState == 1 { //记录为待审核状态
|
|
|
- newState = 2
|
|
|
- } else if oldState == 2 { //记录为一审通过状态
|
|
|
- newState = 4
|
|
|
- operatorType = 3
|
|
|
- } else if oldState == 4 {
|
|
|
- newState = 3
|
|
|
- operatorType = 5 //三审
|
|
|
- }
|
|
|
- } else {
|
|
|
- if oldState == 1 {
|
|
|
- newState = -2
|
|
|
- } else if oldState == 2 {
|
|
|
- newState = -3
|
|
|
- operatorType = 3
|
|
|
- } else if oldState == 4 {
|
|
|
- newState = -4
|
|
|
- operatorType = 5
|
|
|
- }
|
|
|
+ } else {
|
|
|
+ if oldState == 1 {
|
|
|
+ newState = -2
|
|
|
+ } else if oldState == 2 {
|
|
|
+ newState = -3
|
|
|
+ operatorType = 3
|
|
|
+ } else if oldState == 4 {
|
|
|
+ newState = -4
|
|
|
+ operatorType = 5
|
|
|
}
|
|
|
- var productType string
|
|
|
- var (
|
|
|
- userId string
|
|
|
- userData *map[string]interface{}
|
|
|
- ok1 bool
|
|
|
- )
|
|
|
- userData, ok1 = util.MQFW.FindOne("user", map[string]interface{}{"s_phone": (*order)["user_phone"]})
|
|
|
+ }
|
|
|
+ //var productType string
|
|
|
+ var (
|
|
|
+ userId string
|
|
|
+ userData *map[string]interface{}
|
|
|
+ ok1 bool
|
|
|
+ )
|
|
|
+ userData, ok1 = util.MQFW.FindOne("user", map[string]interface{}{"s_phone": (*order)["user_phone"]})
|
|
|
+ if ok1 && userData != nil && len(*userData) > 0 {
|
|
|
+ userId = mongodb.BsonIdToSId((*userData)["_id"])
|
|
|
+ } else {
|
|
|
+ userData, ok1 = util.MQFW.FindOne("user", map[string]interface{}{"s_m_phone": (*order)["user_phone"]})
|
|
|
if ok1 && userData != nil && len(*userData) > 0 {
|
|
|
userId = mongodb.BsonIdToSId((*userData)["_id"])
|
|
|
- } else {
|
|
|
- userData, ok1 = util.MQFW.FindOne("user", map[string]interface{}{"s_m_phone": (*order)["user_phone"]})
|
|
|
- if ok1 && userData != nil && len(*userData) > 0 {
|
|
|
- userId = mongodb.BsonIdToSId((*userData)["_id"])
|
|
|
- }
|
|
|
}
|
|
|
- if newState == 3 { //审核通过,开通权益
|
|
|
- productType = cm.ObjToString((*order)["product_type"])
|
|
|
- if productType == "VIP订阅" {
|
|
|
- vipType := cm.IntAll((*order)["vip_type"])
|
|
|
- if vipType != 0 {
|
|
|
- filterMap := map[string]interface{}{}
|
|
|
- if err := json.Unmarshal([]byte(cm.ObjToString((*order)["filter"])), &filterMap); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- vipEndTime, _ := time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString((*order)["vip_endtime"]), time.Local)
|
|
|
- if vipType == 1 { //超级订阅续费
|
|
|
- //需要判断续费开始日期小于审核日期,开始日期改为审核日期,结束日期根据开始日期往后延
|
|
|
- vipStartTime, _ := time.ParseInLocation(cm.Date_Full_Layout, cm.ObjToString((*order)["vip_starttime"]), time.Local)
|
|
|
- set := map[string]interface{}{
|
|
|
- //"l_vip_endtime": vipEndTime.Unix(),
|
|
|
- "i_vip_expire_tip": 0,
|
|
|
- "i_vip_status": 2,
|
|
|
- }
|
|
|
- if vipStartTime.Unix() < time.Now().Unix() {
|
|
|
- vipStartTime = time.Now().Local()
|
|
|
- //结束日期计算
|
|
|
- month := 0
|
|
|
- cycleUnit := cm.IntAll(filterMap["cycleunit"])
|
|
|
- cycleCount := cm.IntAll(filterMap["cyclecount"])
|
|
|
- if cm.ObjToString((*order)["vip_endtime"]) != "" {
|
|
|
- if cycleUnit == 1 {
|
|
|
- month = cycleCount * 12
|
|
|
- } else if cycleUnit == 2 {
|
|
|
- month = cycleCount
|
|
|
- } else if cycleUnit == 4 {
|
|
|
- month = cycleCount * 3
|
|
|
- }
|
|
|
- }
|
|
|
- if cycleUnit == 3 {
|
|
|
- _endTime := vipStartTime.AddDate(0, 0, cycleCount)
|
|
|
- t := _endTime.Format(cm.Date_Short_Layout) + " 23:59:59"
|
|
|
- vipEndTime, _ = time.ParseInLocation(cm.Date_Full_Layout, t, time.Local)
|
|
|
- } else {
|
|
|
- vipEndTime = GetDATE1(month, vipStartTime.Unix())
|
|
|
- }
|
|
|
- set["l_vip_starttime"] = vipStartTime.Unix()
|
|
|
- //更新订单信息
|
|
|
- ok := util.JysqlDB.Update(DataExportOrder, map[string]interface{}{"order_code": param.OrderCode}, map[string]interface{}{"vip_starttime": vipStartTime.Format(cm.Date_Full_Layout), "vip_endtime": vipEndTime.Format(cm.Date_Full_Layout)})
|
|
|
- if !ok {
|
|
|
- return false, errors.New("更新订单信息出错")
|
|
|
- }
|
|
|
- }
|
|
|
- set["l_vip_endtime"] = vipEndTime.Unix()
|
|
|
- if !util.MQFW.UpdateById("user", userId,
|
|
|
- bson.M{"$set": set}) {
|
|
|
- log.Printf("%s更新结束%d日期出错\n", userId, vipEndTime.Unix())
|
|
|
- }
|
|
|
- } else if vipType == 2 { //升级
|
|
|
- //先判断审核通过日期是否再超级订阅有效期内
|
|
|
- vipStatus := cm.IntAll((*userData)["i_vip_status"])
|
|
|
- if vipStatus != 2 {
|
|
|
- return nil, errors.New("服务已到期,权益开通失败")
|
|
|
- }
|
|
|
- if !util.MQFW.Update("vip_upgrade",
|
|
|
- &map[string]interface{}{"s_userid": userId, "i_isvalid": 0},
|
|
|
- &map[string]interface{}{
|
|
|
- "$set": map[string]interface{}{
|
|
|
- "i_isvalid": 1,
|
|
|
- },
|
|
|
- }, false, true) {
|
|
|
- log.Printf("%s vip_upgrade 更新失败 时间:%d\n", userId, vipEndTime.Unix())
|
|
|
- }
|
|
|
- updata := map[string]interface{}{
|
|
|
- "o_vipjy.o_buyset": filterMap["newBuyset"],
|
|
|
- "i_vip_expire_tip": 0,
|
|
|
- "i_vip_status": 2,
|
|
|
- }
|
|
|
- if filterMap["area"] != nil {
|
|
|
- updata["o_vipjy.o_area"] = filterMap["area"] //设置地区
|
|
|
- }
|
|
|
- if filterMap["industry"] != nil {
|
|
|
- updata["o_vipjy.a_buyerclass"] = filterMap["industry"] //设置行业
|
|
|
- }
|
|
|
- if ok := util.MQFW.UpdateById("user", userId, map[string]interface{}{
|
|
|
- "$set": updata,
|
|
|
- }); !ok {
|
|
|
- log.Printf("%s更新用户出错 %+v\n", userId, updata)
|
|
|
- return false, errors.New("更新user用户信息出错")
|
|
|
- } else {
|
|
|
- //清理缓存
|
|
|
- go ClearBigVipUserPower(userId)
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- } else if productType == "大会员" {
|
|
|
- filterMap := map[string]interface{}{}
|
|
|
- if err := json.Unmarshal([]byte(cm.ObjToString((*order)["filter"])), &filterMap); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- createType := cm.IntAll(filterMap["createType"])
|
|
|
- serverArr := make([]map[string]interface{}, 0)
|
|
|
- //补充包
|
|
|
- if supplys, ok := filterMap["supplys"].([]interface{}); ok {
|
|
|
- serverArr = cm.ObjArrToMapArr(supplys)
|
|
|
- }
|
|
|
- if createType != 1 { //1-新建 2-补充 3-延期
|
|
|
- memberStatus := cm.IntAll((*userData)["i_member_status"])
|
|
|
- bigEndTime := cm.Int64All((*userData)["i_member_endtime"])
|
|
|
- //memberStatus := cm.IntAll((*userData)["i_member_status"])
|
|
|
- freeSubNum := cm.IntAll((*userData)["i_free_sub_num"])
|
|
|
- paySubNum := cm.IntAll((*userData)["i_pay_sub_num"])
|
|
|
- startTime := time.Now()
|
|
|
- endTime := time.Unix(bigEndTime, 0)
|
|
|
- var ok1 bool
|
|
|
- if createType == 2 { //大会员补充服务
|
|
|
- if memberStatus < 0 {
|
|
|
- return nil, errors.New("服务已到期,权益开通失败")
|
|
|
- }
|
|
|
- //大会员补充服务
|
|
|
- ok1, err = BigMemberSupple(freeSubNum, paySubNum, startTime, endTime, userId, filterMap, serverArr)
|
|
|
-
|
|
|
- } else if createType == 3 { //大会员延长服务
|
|
|
- //判断开始时间小于审核时间,开始时间改为审核时间
|
|
|
- lastEndTime := cm.Int64All((*userData)["i_member_endtime"])
|
|
|
- //newBigStartTime := time.Now().Unix()
|
|
|
- startTime := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Now().Location())
|
|
|
- effectState := true
|
|
|
- var endTime time.Time
|
|
|
- if lastEndTime < time.Now().Unix() {
|
|
|
- //计算大会员结束时间
|
|
|
- effectState = false
|
|
|
- cycleCount := cm.IntAll(filterMap["cycle"])
|
|
|
- cycleType := cm.IntAll(filterMap["cycleType"])
|
|
|
- nowTime := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local)
|
|
|
- endTime = GetDATE(cycleCount, cycleType, nowTime.Unix())
|
|
|
- }
|
|
|
- ok1, err = BigMemberExtend(filterMap, userId, param.OrderCode, effectState, startTime, endTime, cm.IntAll((*userData)["i_member_status"]))
|
|
|
- }
|
|
|
- if !ok1 && err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- }
|
|
|
- } else if productType == "大会员-子账号" {
|
|
|
- memberStatus := cm.IntAll((*userData)["i_member_status"])
|
|
|
- if memberStatus < 0 {
|
|
|
- return nil, errors.New("服务已到期,权益开通失败")
|
|
|
- }
|
|
|
- filterMap := map[string]interface{}{}
|
|
|
- if err := json.Unmarshal([]byte(cm.ObjToString((*order)["filter"])), &filterMap); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- freeSubNum := cm.IntAll((*userData)["i_free_sub_num"])
|
|
|
- paySubNum := cm.IntAll((*userData)["i_pay_sub_num"])
|
|
|
- bigStart := cm.Int64All((*userData)["i_member_starttime"])
|
|
|
- bigEnd := cm.Int64All((*userData)["i_member_endtime"])
|
|
|
- areaCount := cm.IntAll(filterMap["areaCount"])
|
|
|
- ok, err := SubAccount(SubAccountParam{
|
|
|
- BuyCount: cm.IntAll((*order)["buy_count"]),
|
|
|
- BuySubject: cm.IntAll((*order)["buy_subject"]),
|
|
|
- StartTime: time.Unix(bigStart, 0),
|
|
|
- EndTime: time.Unix(bigEnd, 0),
|
|
|
- UserId: userId,
|
|
|
- InsertBigService: freeSubNum == 0 && paySubNum == 0,
|
|
|
- EntId: cm.IntAll((*order)["ent_id"]),
|
|
|
- OrderId: cm.IntAll((*order)["id"]),
|
|
|
- ProvinceCount: cm.IntAll(cm.If(areaCount == 0, -1, areaCount)),
|
|
|
- ProductType: getBigMemberProductTypeByOrderCode(cm.ObjToString(filterMap["contactOrderCode"])),
|
|
|
- Phone: cm.ObjToString((*order)["user_phone"]),
|
|
|
- })
|
|
|
- if !ok && err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
-
|
|
|
- } else if productType == "大会员-补充包" {
|
|
|
- memberStatus := cm.IntAll((*userData)["i_member_status"])
|
|
|
- if memberStatus < 0 {
|
|
|
- return nil, errors.New("服务已到期,权益开通失败")
|
|
|
- }
|
|
|
- filterMap := map[string]interface{}{}
|
|
|
- if err := json.Unmarshal([]byte(cm.ObjToString((*order)["filter"])), &filterMap); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- serverArr := make([]map[string]interface{}, 0)
|
|
|
- //补充包
|
|
|
- if supplys, ok := filterMap["supplys"].([]interface{}); ok {
|
|
|
- serverArr = cm.ObjArrToMapArr(supplys)
|
|
|
- }
|
|
|
- ok, err := SupplePackage(userId, serverArr)
|
|
|
- if !ok && err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ ok := util.JysqlDB.ExecTx("审核订单", func(tx *sql.Tx) bool {
|
|
|
+ upData := map[string]interface{}{
|
|
|
+ "audit_status": newState,
|
|
|
}
|
|
|
-
|
|
|
- ok := util.JysqlDB.ExecTx("审核订单", func(tx *sql.Tx) bool {
|
|
|
- upData := map[string]interface{}{
|
|
|
- "audit_status": newState,
|
|
|
- }
|
|
|
- if newState == 3 {
|
|
|
- now := time.Now()
|
|
|
- saleTime, _ := time.Parse(cm.Date_Full_Layout, cm.ObjToString((*order)["sale_time"]))
|
|
|
- if now.Unix() > saleTime.Unix() {
|
|
|
- saleTime = now
|
|
|
- }
|
|
|
- upData["sale_time"] = saleTime.Format(cm.Date_Full_Layout)
|
|
|
- //“协议归档状态”如若为“已归档”,则“订单状态”更新为“已完成”,如若为“未归档”,则订单状态仍为“未完成”
|
|
|
- contractData := util.JysqlDB.FindOne("contract", map[string]interface{}{"order_code": param.OrderCode}, "contract_archive_status", "")
|
|
|
- if contractData != nil && len(*contractData) > 0 {
|
|
|
- if cm.IntAll((*contractData)["contract_archive_status"]) == 1 {
|
|
|
- upData["order_status"] = 1
|
|
|
- }
|
|
|
+ if newState == 3 {
|
|
|
+ now := time.Now()
|
|
|
+ saleTime, _ := time.Parse(cm.Date_Full_Layout, cm.ObjToString((*order)["sale_time"]))
|
|
|
+ if now.Unix() > saleTime.Unix() {
|
|
|
+ saleTime = now
|
|
|
+ }
|
|
|
+ upData["sale_time"] = saleTime.Format(cm.Date_Full_Layout)
|
|
|
+ //“协议归档状态”如若为“已归档”,则“订单状态”更新为“已完成”,如若为“未归档”,则订单状态仍为“未完成”
|
|
|
+ contractData := util.JysqlDB.FindOne("contract", map[string]interface{}{"order_code": param.OrderCode}, "contract_archive_status", "")
|
|
|
+ if contractData != nil && len(*contractData) > 0 {
|
|
|
+ if cm.IntAll((*contractData)["contract_archive_status"]) == 1 {
|
|
|
+ upData["order_status"] = 1
|
|
|
}
|
|
|
- if cm.IntAll((*order)["buy_subject"]) == 2 {
|
|
|
- orderStatus := cm.IntAll(cm.If(cm.IntAll((*order)["order_status"]) == 1, 1, upData["order_status"]))
|
|
|
- entId, err, userPositionId := AutomaticallyCreatingEnt(cm.InterfaceToStr((*order)["company_name"]), cm.InterfaceToStr((*order)["user_phone"]), param.OrderCode, orderStatus, userId)
|
|
|
- if err != nil {
|
|
|
- log.Printf("AutomaticallyCreatingEnt 自动创建企业信息失败:code:%s,err:%s", param.OrderCode, err.Error())
|
|
|
- return false
|
|
|
- } else {
|
|
|
- if entId != 0 {
|
|
|
- upData["ent_id"] = entId
|
|
|
- upData["user_id"] = userPositionId
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- filterMap := map[string]interface{}{}
|
|
|
- if err := json.Unmarshal([]byte(cm.ObjToString((*order)["filter"])), &filterMap); err != nil {
|
|
|
+ }
|
|
|
+ if cm.IntAll((*order)["buy_subject"]) == 2 {
|
|
|
+ orderStatus := cm.IntAll(cm.If(cm.IntAll((*order)["order_status"]) == 1, 1, upData["order_status"]))
|
|
|
+ entId, err, userPositionId := AutomaticallyCreatingEnt(cm.InterfaceToStr((*order)["company_name"]), cm.InterfaceToStr((*order)["user_phone"]), param.OrderCode, orderStatus, userId)
|
|
|
+ if err != nil {
|
|
|
+ log.Printf("AutomaticallyCreatingEnt 自动创建企业信息失败:code:%s,err:%s", param.OrderCode, err.Error())
|
|
|
return false
|
|
|
+ } else {
|
|
|
+ if entId != 0 {
|
|
|
+ upData["ent_id"] = entId
|
|
|
+ upData["user_id"] = userPositionId
|
|
|
+ }
|
|
|
}
|
|
|
- filterMap["audit_type"] = "人工审核"
|
|
|
- filterByte, _ := json.Marshal(filterMap)
|
|
|
- upData["filter"] = string(filterByte)
|
|
|
}
|
|
|
- //更新订单
|
|
|
- up := util.JysqlDB.UpdateByTx(tx, "dataexport_order", map[string]interface{}{"order_code": param.OrderCode}, upData)
|
|
|
- //插入审核记录表
|
|
|
- insertData := map[string]interface{}{
|
|
|
- "operator": context.User.Username,
|
|
|
- "create_time": time.Now().Format(cm.Date_Full_Layout),
|
|
|
- "operator_type": operatorType,
|
|
|
- "audit_status": newState,
|
|
|
- "back_reason": param.Reason,
|
|
|
- "order_code": param.OrderCode,
|
|
|
- "audit_type": 2,
|
|
|
+ filterMap := map[string]interface{}{}
|
|
|
+ if err := json.Unmarshal([]byte(cm.ObjToString((*order)["filter"])), &filterMap); err != nil {
|
|
|
+ return false
|
|
|
}
|
|
|
- in := util.JysqlDB.InsertByTx(tx, "audit_records", insertData)
|
|
|
- return up && in > 0
|
|
|
- })
|
|
|
- if !ok {
|
|
|
- return nil, errors.New("更新订单信息出错")
|
|
|
+ filterMap["audit_type"] = "人工审核"
|
|
|
+ filterByte, _ := json.Marshal(filterMap)
|
|
|
+ upData["filter"] = string(filterByte)
|
|
|
}
|
|
|
- } else {
|
|
|
- return nil, errors.New("为查询到订单信息")
|
|
|
+ //更新订单
|
|
|
+ up := util.JysqlDB.UpdateByTx(tx, "dataexport_order", map[string]interface{}{"order_code": param.OrderCode}, upData)
|
|
|
+ //插入审核记录表
|
|
|
+ insertData := map[string]interface{}{
|
|
|
+ "operator": context.User.Username,
|
|
|
+ "create_time": time.Now().Format(cm.Date_Full_Layout),
|
|
|
+ "operator_type": operatorType,
|
|
|
+ "audit_status": newState,
|
|
|
+ "back_reason": param.Reason,
|
|
|
+ "order_code": param.OrderCode,
|
|
|
+ "audit_type": 2,
|
|
|
+ }
|
|
|
+ in := util.JysqlDB.InsertByTx(tx, "audit_records", insertData)
|
|
|
+ return up && in > 0
|
|
|
+ })
|
|
|
+ if !ok {
|
|
|
+ return nil, errors.New("更新订单信息出错")
|
|
|
}
|
|
|
+
|
|
|
return map[string]interface{}{
|
|
|
"status": 1,
|
|
|
}, nil
|