aa
This commit is contained in:
@@ -6,23 +6,18 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/smsmsg"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/financial"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/auth2"
|
||||
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/dingding"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jsonerr"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -254,28 +249,6 @@ func DisableUser(ctx *jxcontext.Context, userID string) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
func OnDingDingMsg(msg map[string]interface{}) (callbackResponse *dingdingapi.CallbackResponse) {
|
||||
eventType := utils.Interface2String(msg[dingdingapi.KeyEventType])
|
||||
if eventType == dingdingapi.CBTagUserLeaveOrg {
|
||||
var (
|
||||
authBind *model.AuthBind
|
||||
err error
|
||||
)
|
||||
db := dao.GetDB()
|
||||
for _, userID := range msg[dingdingapi.KeyUserID].([]interface{}) {
|
||||
userIDStr := utils.Interface2String(userID)
|
||||
globals.SugarLogger.Debugf("OnDingDingMsg dingding user:%s left company", userIDStr)
|
||||
if authBind, err = dao.GetAuthBind(db, model.AuthBindTypeAuth, dingding.AuthTypeStaff, userIDStr); err == nil { // 直接找到了
|
||||
globals.SugarLogger.Debugf("OnDingDingMsg dingding user:%s, userID:%s left company", userIDStr, authBind.UserID)
|
||||
if err = DisableUser(jxcontext.AdminCtx, authBind.UserID); err != nil {
|
||||
globals.SugarLogger.Errorf("OnDingDingMsg failed with error:%v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return api.DingDingAPI.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
func GetUsers(ctx *jxcontext.Context, keyword string, userID string, pop int, mobile string, fromTime, toTime string, timeType int, cityCodes, consumeTypes []int, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||
return dao.GetUsers2(dao.GetDB(), keyword, userID, pop, mobile, utils.Str2Time(fromTime), utils.Str2Time(toTime), timeType, cityCodes, consumeTypes, offset, pageSize)
|
||||
}
|
||||
@@ -298,29 +271,6 @@ func checkUserType(userID string, userType int8) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func getAddressInfoFromCoord(db *dao.DaoDB, lng, lat float64) (formattedAddress string, districtCode, cityCode int, err error) {
|
||||
regeoInfo, err := api.AutonaviAPI.GeoCodeRegeoSingle(lng, lat, 0, false, nil, 0, 0)
|
||||
if err == nil {
|
||||
formattedAddress = regeoInfo.FormattedAddress
|
||||
districtCode = int(utils.Str2Int64WithDefault(regeoInfo.AddressComponent.Adcode, 0))
|
||||
if districtCode == 0 {
|
||||
err = fmt.Errorf("坐标lng:%f,lat:%f找不到位置信息", lng, lat)
|
||||
} else if districtInfo, err2 := dao.GetPlaceByCode(db, districtCode); err2 == nil {
|
||||
cityCode = districtInfo.ParentCode
|
||||
}
|
||||
}
|
||||
return formattedAddress, districtCode, cityCode, err
|
||||
}
|
||||
|
||||
func AddMyDeliveryAddress(ctx *jxcontext.Context, address *model.UserDeliveryAddress) (outAddress *dao.UserDeliveryAddressEx, err error) {
|
||||
globals.SugarLogger.Debugf("AddMyDeliveryAddress address:%s", utils.Format4Output(address, true))
|
||||
_, address.UserID = ctx.GetMobileAndUserID()
|
||||
out, err := AddUserDeliveryAddress(ctx, address)
|
||||
list, _, err := dao.QueryUserDeliveryAddress(dao.GetDB(), int64(out.ID), nil, 0, 0, -1)
|
||||
globals.SugarLogger.Debugf("AddMyDeliveryAddress2 address:%s, err:%v", utils.Format4Output(address, true), err)
|
||||
return list[0], err
|
||||
}
|
||||
|
||||
func DeleteUserDeliveryAddress(ctx *jxcontext.Context, userID string, addressID int) (err error) {
|
||||
num, err := dao.DeleteEntityLogically(dao.GetDB(), &model.UserDeliveryAddress{}, nil, ctx.GetUserName(), map[string]interface{}{
|
||||
model.FieldID: addressID,
|
||||
@@ -339,56 +289,6 @@ func DeleteMyDeliveryAddress(ctx *jxcontext.Context, addressID int) (err error)
|
||||
return DeleteUserDeliveryAddress(ctx, userID, addressID)
|
||||
}
|
||||
|
||||
func UpdateUserDeliveryAddress(ctx *jxcontext.Context, userID string, addressID int, payload map[string]interface{}) (err error) {
|
||||
if userID == "" {
|
||||
return fmt.Errorf("操作用户配送地址时必须指定UserID")
|
||||
}
|
||||
address := &model.UserDeliveryAddress{
|
||||
UserID: userID,
|
||||
}
|
||||
address.ID = addressID
|
||||
db := dao.GetDB()
|
||||
if err = dao.GetEntity(db, address, model.FieldID, "UserID"); err == nil {
|
||||
var outAddress *model.UserDeliveryAddress
|
||||
valid := dao.StrictMakeMapByStructObject2(payload, address, &outAddress, ctx.GetUserName())
|
||||
delete(valid, "autoAddress")
|
||||
delete(valid, "districtCode")
|
||||
delete(valid, "cityCode")
|
||||
if len(valid) > 0 {
|
||||
if valid["lng"] != nil || valid["lat"] != nil {
|
||||
valid["autoAddress"], valid["districtCode"], valid["cityCode"], err = getAddressInfoFromCoord(db, outAddress.Lng, outAddress.Lat)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
txDB, _ := dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
if utils.ForceInterface2Int64(valid["isDefault"]) == 1 {
|
||||
if err = dao.ClearUserDeliveryAddressDefault(db, userID, 0); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return err
|
||||
}
|
||||
}
|
||||
if _, err = dao.UpdateEntityLogically(db, address, valid, ctx.GetUserName(), nil); err == nil {
|
||||
dao.Commit(db, txDB)
|
||||
} else {
|
||||
dao.Rollback(db, txDB)
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func UpdateMyDeliveryAddress(ctx *jxcontext.Context, addressID int, payload map[string]interface{}) (err error) {
|
||||
_, userID := ctx.GetMobileAndUserID()
|
||||
return UpdateUserDeliveryAddress(ctx, userID, addressID, payload)
|
||||
}
|
||||
|
||||
func QueryUserDeliveryAddress(ctx *jxcontext.Context, userIDs []string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||
addressList, totalCount, err := dao.QueryUserDeliveryAddress(dao.GetDB(), 0, userIDs, 0, offset, pageSize)
|
||||
if err == nil {
|
||||
@@ -406,42 +306,6 @@ func QueryMyDeliveryAddress(ctx *jxcontext.Context, addType int) (addressList []
|
||||
return addressList, err
|
||||
}
|
||||
|
||||
func AddUserDeliveryAddress(ctx *jxcontext.Context, address *model.UserDeliveryAddress) (outAddress *model.UserDeliveryAddress, err error) {
|
||||
globals.SugarLogger.Debugf("AddUserDeliveryAddress1 address:%s", utils.Format4Output(address, true))
|
||||
if address.UserID == "" {
|
||||
return nil, fmt.Errorf("操作用户配送地址时必须指定UserID")
|
||||
}
|
||||
db := dao.GetDB()
|
||||
lng := address.Lng
|
||||
lat := address.Lat
|
||||
address.AutoAddress, address.DistrictCode, address.CityCode, err = getAddressInfoFromCoord(db, lng, lat)
|
||||
if err == nil {
|
||||
globals.SugarLogger.Debugf("AddUserDeliveryAddress2 address:%s", utils.Format4Output(address, true))
|
||||
txDB, _ := dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
dao.WrapAddIDCULDEntity(address, ctx.GetUserName())
|
||||
if address.IsDefault == 1 {
|
||||
if err = dao.ClearUserDeliveryAddressDefault(db, address.UserID, 0); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
if err = dao.CreateEntity(db, address); err == nil {
|
||||
dao.Commit(db, txDB)
|
||||
outAddress = address
|
||||
} else {
|
||||
dao.Rollback(db, txDB)
|
||||
}
|
||||
}
|
||||
globals.SugarLogger.Debugf("AddUserDeliveryAddress3 address:%s", utils.Format4Output(address, true))
|
||||
return outAddress, err
|
||||
}
|
||||
|
||||
func SaveUserCart(ctx *jxcontext.Context, userID string, storeID int, cartItems []*model.UserCartItem) (err error) {
|
||||
if userID == "" || storeID == 0 {
|
||||
return fmt.Errorf("用户与门店必须要指定")
|
||||
@@ -624,17 +488,17 @@ func UpdateUser(ctx *jxcontext.Context, payload map[string]interface{}) (err err
|
||||
UserID: userID,
|
||||
}
|
||||
dao.GetEntity(db, user, "UserID")
|
||||
if payload["lng"] != nil && payload["lat"] != nil {
|
||||
if address, districtCode, cityCode, err := getAddressInfoFromCoord(db, utils.MustInterface2Float64(payload["lng"]), utils.MustInterface2Float64(payload["lat"])); err == nil {
|
||||
delete(payload, "lng")
|
||||
delete(payload, "lat")
|
||||
payload["address"] = address
|
||||
payload["districtCode"] = districtCode
|
||||
payload["cityCode"] = cityCode
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
}
|
||||
//if payload["lng"] != nil && payload["lat"] != nil {
|
||||
// if address, districtCode, cityCode, err := getAddressInfoFromCoord(db, utils.MustInterface2Float64(payload["lng"]), utils.MustInterface2Float64(payload["lat"])); err == nil {
|
||||
// delete(payload, "lng")
|
||||
// delete(payload, "lat")
|
||||
// payload["address"] = address
|
||||
// payload["districtCode"] = districtCode
|
||||
// payload["cityCode"] = cityCode
|
||||
// } else {
|
||||
// return err
|
||||
// }
|
||||
//}
|
||||
//暂时用这个字段作为更新他的推广人
|
||||
if payload["popCode"] != nil {
|
||||
if user, err := dao.GetUserByID(db, "pop_code", payload["popCode"].(string)); err == nil {
|
||||
@@ -673,26 +537,26 @@ func UpdateUser(ctx *jxcontext.Context, payload map[string]interface{}) (err err
|
||||
user2, err2 := dao.GetUserByID(db, "user_id", payload["popUser"].(string))
|
||||
err = err2
|
||||
do := func(user *model.User, flag bool) (err error) {
|
||||
if user.PopCount%4 == 0 && user.PopFlag == model.NO {
|
||||
if _, err = InvestMember(ctx, 1, user.UserID, true); err == nil {
|
||||
//发短信,公众号消息通知
|
||||
smsmsg.SendSMSMsg([]string{*user.Mobile}, globals.SMSSignName, globals.SMSPopSuccessTemplate, nil)
|
||||
// weixinmsg.SendMsgToUser(userID, templateID, data)
|
||||
event.SendSysMessageSimple("您好,您已成功邀请4人加入我们,成功免费获得1个月会员!", user.UserID)
|
||||
}
|
||||
user.PopFlag = model.YES
|
||||
dao.UpdateEntity(db, user, "PopFlag")
|
||||
|
||||
if flag {
|
||||
if users, _, err := dao.GetUsers(db, 0, "", user.UserID, nil, nil, nil, 0, 999); err == nil {
|
||||
for _, v := range users {
|
||||
v.PopedFlag = model.YES
|
||||
dao.UpdateEntity(db, v, "PopedFlag")
|
||||
}
|
||||
}
|
||||
_, err = event.CreateMessageGroup(ctx, user.UserID, "", "", 5, 100)
|
||||
}
|
||||
}
|
||||
//if user.PopCount%4 == 0 && user.PopFlag == model.NO {
|
||||
// if _, err = InvestMember(ctx, 1, user.UserID, true); err == nil {
|
||||
// //发短信,公众号消息通知
|
||||
// smsmsg.SendSMSMsg([]string{*user.Mobile}, globals.SMSSignName, globals.SMSPopSuccessTemplate, nil)
|
||||
// // weixinmsg.SendMsgToUser(userID, templateID, data)
|
||||
// event.SendSysMessageSimple("您好,您已成功邀请4人加入我们,成功免费获得1个月会员!", user.UserID)
|
||||
// }
|
||||
// user.PopFlag = model.YES
|
||||
// dao.UpdateEntity(db, user, "PopFlag")
|
||||
//
|
||||
// if flag {
|
||||
// if users, _, err := dao.GetUsers(db, 0, "", user.UserID, nil, nil, nil, 0, 999); err == nil {
|
||||
// for _, v := range users {
|
||||
// v.PopedFlag = model.YES
|
||||
// dao.UpdateEntity(db, v, "PopedFlag")
|
||||
// }
|
||||
// }
|
||||
// _, err = event.CreateMessageGroup(ctx, user.UserID, "", "", 5, 100)
|
||||
// }
|
||||
//}
|
||||
return err
|
||||
}
|
||||
if user2 != nil {
|
||||
|
||||
Reference in New Issue
Block a user