123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- package user
- import (
- "errors"
- userReq "hongze/hongze_yb/models/request/user"
- "hongze/hongze_yb/models/tables/chart_permission"
- "hongze/hongze_yb/models/tables/company"
- "hongze/hongze_yb/models/tables/company_product"
- "hongze/hongze_yb/models/tables/rddp/msg_code"
- "hongze/hongze_yb/models/tables/wx_user"
- "hongze/hongze_yb/models/tables/yb_apply_record"
- "hongze/hongze_yb/services"
- companyService "hongze/hongze_yb/services/company"
- "hongze/hongze_yb/services/user"
- "hongze/hongze_yb/utils"
- "strings"
- "time"
- )
- // SendSmsCode 发送手机短信
- func SendSmsCode(openid, mobile, areaNum string) (err error, errMsg string) {
- if mobile == "" {
- err = errors.New("请输入手机号")
- return
- }
- msgCode := utils.GetRandDigit(4)
- var result bool
- if areaNum == "86" || areaNum == "" || areaNum == "0" {
- //国内的短信
- result = services.SendSmsCode(mobile, msgCode)
- } else {
- //国际短信
- result = services.SendSmsCodeGj(mobile, msgCode, areaNum)
- }
- //发送成功
- if result {
- item := &msg_code.MsgCode{
- OpenID: openid,
- Mobile: mobile,
- Code: msgCode,
- ExpiredIn: time.Now().Add(15 * time.Minute).Unix(),
- Enabled: 1,
- CreatedTime: time.Time{},
- LastUpdatedTime: time.Time{},
- }
- err = item.Create()
- } else {
- err = errors.New("发送失败,Err:" + err.Error())
- }
- return
- }
- // SendEmailCode 发送邮件
- func SendEmailCode(openid, email string) (err error, errMsg string) {
- if email == "" {
- err = errors.New("请输入邮箱地址")
- return
- }
- if !utils.ValidateEmailFormatat(email) {
- err = errors.New("邮箱格式错误,请重新输入")
- return
- }
- msgCode := utils.GetRandDigit(4)
- content := "尊敬的用户:</br>您好,感谢您使用弘则研究,您正在进行邮箱验证,本次请求的验证码为:" + msgCode + "(为了保障您账号的安全性,请在15分钟内完成验证。)</br>弘则研究团队 </br>" + time.Now().Format(utils.FormatDateCN)
- title := "弘则研究登陆验证"
- //发送邮件
- result, err := services.SendEmailByHz(title, content, email)
- if result {
- item := &msg_code.MsgCode{
- OpenID: openid,
- Mobile: email,
- Code: msgCode,
- ExpiredIn: time.Now().Add(15 * time.Minute).Unix(),
- Enabled: 1,
- CreatedTime: time.Time{},
- LastUpdatedTime: time.Time{},
- }
- err = item.Create()
- } else {
- err = errors.New("发送失败,Err:" + err.Error())
- }
- return
- }
- type CompanyPermission struct {
- Name string `json:"name" description:"分类名称"`
- PermissionList []PermissionList `json:"permission_list" description:"权限列表"`
- }
- type PermissionList struct {
- Name string `json:"name" description:"权限名称"`
- StartDate time.Time `json:"start_date" description:"开始日期"`
- EndDate time.Time `json:"end_date" description:"结束日期"`
- Status string `json:"status" description:"状态"`
- }
- type Detail struct {
- CompanyName string `json:"company_name" description:"客户名称(公司名称)"`
- Status string `json:"status" description:"客户状态"`
- RealName string `json:"real_name" description:"用户名称"`
- Mobile string `json:"mobile" description:"手机号"`
- Email string `json:"email" description:"邮箱"`
- PermissionList []CompanyPermission `json:"permission_list" description:"权限列表"`
- }
- // GetUserInfo 获取用户我的页面详情数据
- func GetUserInfo(userInfo user.UserInfo) (userDetail Detail, err error, errMsg string) {
- list := make([]CompanyPermission, 0)
- companyName := userInfo.Note
- status := ``
- if userInfo.CompanyID > 1 {
- companyInfo, tmpErr := company.GetByCompanyId(userInfo.CompanyID)
- if tmpErr != nil {
- err = tmpErr
- if tmpErr == utils.ErrNoRow {
- err = errors.New("找不到该客户")
- errMsg = "找不到该客户"
- return
- }
- errMsg = "系统异常"
- return
- }
- companyName = companyInfo.CompanyName
- companyProduct, tmpErr := company_product.GetByCompany2ProductId(userInfo.CompanyID, 1)
- //如果有ficc权限,那么就去查询相关权限
- if tmpErr == nil {
- status = companyProduct.Status //产品状态
- //获取所有的权限分类列表
- allPermissionList, tmpErr := companyService.GetPermissionListByProductId(1)
- if tmpErr != nil {
- err = tmpErr
- return
- }
- permissionClassMap := make(map[int]*chart_permission.ChartPermission)
- for _, chartPermission := range allPermissionList {
- permissionClassMap[int(chartPermission.ChartPermissionID)] = chartPermission
- }
- // 获取权限列表
- permissionList, tmpErr := companyService.GetValidPermissionByCompany2ProductId(userInfo.CompanyID, 1)
- if tmpErr != nil {
- err = tmpErr
- return
- }
- permissionMap := make(map[string][]PermissionList)
- for _, permission := range permissionList {
- chartPermission, ok := permissionClassMap[permission.ChartPermissionID]
- if ok {
- tmpPermission := PermissionList{
- Name: chartPermission.ChartPermissionName,
- StartDate: permission.StartDate,
- EndDate: permission.EndDate,
- Status: permission.Status,
- }
- if tmpPermissionList, ok2 := permissionMap[chartPermission.ClassifyName]; ok2 {
- permissionMap[chartPermission.ClassifyName] = append(tmpPermissionList, tmpPermission)
- } else {
- tmpPermissionList := make([]PermissionList, 0)
- permissionMap[chartPermission.ClassifyName] = append(tmpPermissionList, tmpPermission)
- }
- }
- }
- for name, tmpPermissionList := range permissionMap {
- list = append(list, CompanyPermission{
- Name: name,
- PermissionList: tmpPermissionList,
- })
- }
- }
- }
- //if Note
- userDetail = Detail{
- CompanyName: companyName, //客户名称(公司名称)
- Status: status, //产品状态
- RealName: userInfo.RealName,
- Mobile: userInfo.Mobile,
- Email: userInfo.Email,
- PermissionList: list, //权限列表
- }
- return
- }
- type Record struct {
- BusinessCardURL string `json:"business_card_url" description:"名片"`
- RealName string `json:"real_name" description:"姓名"`
- CompanyName string `json:"company_name" description:"客户备注的公司名称"`
- Mobile string `json:"mobile" description:"手机号"`
- }
- // GetLastApplyInfo 获取最近的一套申请记录
- func GetLastApplyInfo(userId int) (record Record, err error) {
- recordInfo, err := yb_apply_record.GetLastNotOpRecordByUserId(userId)
- if err != nil {
- if err == utils.ErrNoRow {
- err = nil
- }
- return
- }
- record = Record{
- BusinessCardURL: recordInfo.BusinessCardURL,
- RealName: recordInfo.RealName,
- CompanyName: recordInfo.CompanyName,
- Mobile: recordInfo.Mobile,
- }
- return
- }
- // Apply 客户申请
- func Apply(userId int, companyId int64, mobile, email string, applyInfo userReq.ApplyReq) (ybApplyRecord *yb_apply_record.YbApplyRecord, err error) {
- sellerName := ``
- status := `潜在客户`
- companyName := applyInfo.CompanyName
- // 联系人信息
- wxUserInfo, err := wx_user.GetByUserId(userId)
- if err != nil {
- return
- }
- if companyId > 1 {
- //客户信息
- companyInfo, tmpErr := company.GetByCompanyId(companyId)
- if tmpErr != nil {
- err = tmpErr
- return
- }
- companyName = companyInfo.CompanyName
- //客户产品权限
- companyProductList, tmpErr := company_product.GetListByCompanyId(companyId)
- if tmpErr != nil {
- err = tmpErr
- return
- }
- sellerNameList := make([]string, 0)
- statusList := make([]string, 0)
- for _, companyProductInfo := range companyProductList {
- if companyProductInfo.ProductID == 2 && status == "潜在客户" {
- status = "权益客户"
- }
- if companyProductInfo.ProductID == 1 {
- sellerName = companyProductInfo.SellerName
- status = companyProductInfo.Status
- }
- }
- if len(sellerNameList) > 0 && len(statusList) > 0 {
- sellerName = strings.Join(sellerNameList, ",")
- status = strings.Join(statusList, ",")
- }
- }
- ybApplyRecord = &yb_apply_record.YbApplyRecord{
- UserID: userId,
- BusinessCardURL: applyInfo.BusinessCardUrl,
- RealName: applyInfo.RealName,
- CompanyName: applyInfo.CompanyName,
- Mobile: mobile,
- Email: email,
- Permission: applyInfo.Permission,
- SellerName: sellerName,
- Status: status,
- CompanyIDPay: int(companyId),
- CompanyNamePay: companyName,
- CreateTime: time.Now(),
- }
- err = ybApplyRecord.Create()
- if err != nil {
- return
- }
- // 修改客户信息
- wxUserInfo.RealName = applyInfo.RealName
- wxUserInfo.Note = applyInfo.CompanyName
- wxUserInfo.IsNote = 1
- applyMethod := wxUserInfo.ApplyMethod //0:未申请,1:已付费客户申请试用,2:非客户申请试用
- applyMethod = 2
- if sellerName != "" {
- applyMethod = 1
- }
- wxUserInfo.ApplyMethod = applyMethod
- _ = wxUserInfo.Update([]string{"RealName", "Note", "IsNote", "ApplyMethod"})
- return
- }
- // GetUserTabBar 获取最近的一套申请记录
- func GetUserTabBar(userInfo user.UserInfo) (list []string, err error) {
- //buy,report,chart,activity,user
- list = []string{"activity", "user"}
- companyProduct, err := company_product.GetByCompany2ProductId(userInfo.CompanyID, 1)
- if err != nil {
- if err == utils.ErrNoRow {
- err = nil
- }
- return
- }
- if strings.Contains("永续,正式,试用", companyProduct.Status) {
- list = append(list, "report", "chart")
- }
- if strings.Contains("永续,正式", companyProduct.Status) {
- list = append(list, "buy")
- }
- return
- }
|