12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- // 逻辑作接口-移动端用户
- // 秒寻科技
- // zt
- //2024-02-2
- package usermobilelogic
- import (
- "ipsomc/core/company/companymodel"
- "ipsomc/core/dao/mysql/mysqlapi"
- "ipsomc/core/dao/redis/redisapi"
- "ipsomc/core/dao/redis/redismodel"
- "ipsomc/core/usermobile/usermobileapi"
- "ipsomc/core/usermobile/usermobilemodel"
- "ipsomc/util"
- "strconv"
- "time"
- )
- type UserMobileLgc struct {
- mySqlApi mysqlapi.MySqlApi
- userApi usermobileapi.UserMobileApi
- redisApi redisapi.RedisApi
- }
- // 检查用户是否已经登录过,若曾经登录过则返回用户信息给前端,若未曾登录则操作数据库添加记录
- func (obj *UserMobileLgc) CheckUserLoginLgc(dataModel *usermobilemodel.UserMobile) error {
- var count uint8
- modelUser := new(usermobilemodel.UserMobile)
- //基于openid判断用户曾经是否登录
- if err := obj.mySqlApi.GetDb().Model(modelUser).Where("openid=?", dataModel.OpenID).Count(&count).Error; err != nil {
- return err
- }
- //曾经登录过
- if count > 0 {
- //获得用户信息
- if err := obj.mySqlApi.GetDb().Model(modelUser).Where("openid=?", dataModel.OpenID).First(modelUser).Error; err != nil {
- return err
- }
- //组织返回数据
- dataModel.CompanyID = modelUser.CompanyID
- dataModel.UserType = modelUser.UserType
- dataModel.ID = modelUser.ID
- dataModel.Nickname = modelUser.Nickname
- dataModel.Avatar = modelUser.Avatar
- dataModel.Province = modelUser.Province
- dataModel.City = modelUser.City
- dataModel.Country = modelUser.Country
- } else { //未曾登录
- //根据域名获得公司id
- modelCompany := new(companymodel.Company)
- if err := obj.mySqlApi.GetDb().Model(modelCompany).Where("domain_name=?", dataModel.DomainName).First(modelCompany).Error; err != nil {
- return err
- }
- //将数据添加到数据库
- modelUser.CompanyID = modelCompany.ID
- //modelUser.ItemID = modelCompany.
- modelUser.UserType = 2 //小程序登录
- modelUser.OpenID = dataModel.OpenID
- if err := obj.userApi.AddUserByOpenId(modelUser); err != nil {
- return err
- }
- //组织返回数据
- dataModel.CompanyID = modelCompany.ID
- dataModel.UserType = modelUser.UserType
- dataModel.ID = modelUser.ID
- }
- //生成token
- uuid := util.GenerateUuid()
- token := "mtoken" + strconv.Itoa(int(modelUser.ID)) + "-" + uuid
- dataModel.Token = token
- //将用户数据保存到redis中
- redisModel := new(redismodel.RedisUserMobile)
- redisModel.CompanyID = modelUser.CompanyID
- redisModel.UserType = modelUser.UserType
- redisModel.UserID = modelUser.ID
- redisModel.Nickname = modelUser.Nickname
- redisModel.Token = token
- redisModel.TokenTime = time.Now().Format("2006-01-02 15:16:17")
- //以token为键,将用户信息保存到redis中,token过期时间为60分钟
- if err := obj.redisApi.SetModelData(token, redisModel, 60); err != nil {
- return err
- }
- return nil
- }
|