123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- package cases
-
- import (
- "errors"
- "spaceofcheng/services/models"
- "spaceofcheng/services/models/cases"
- "spaceofcheng/services/models/customer"
- "spaceofcheng/services/models/model"
- "spaceofcheng/services/models/system"
- "spaceofcheng/services/service"
- "spaceofcheng/services/utils"
- )
-
- // CaseServ 系统处理
- type CaseServ struct {
- ctx *utils.Context
- dao *cases.CaseDAO
- userdao *system.UserDAO
- customerdao *customer.CustomerDAO
- }
-
- // NewCaseServ 初始化
- func NewCaseServ(ctx *utils.Context) *CaseServ {
- return &CaseServ{
- ctx: ctx,
- dao: cases.NewCaseDAO(ctx),
- userdao: system.NewUserDAO(ctx),
- customerdao: customer.NewCustomerDAO(ctx),
- }
- }
-
- const (
- CONFTYPE_GOODS = "goods"
- )
-
- // GetCases 获取案场列表
- func (s *CaseServ) GetCases(caseids, casename string, page, pageSize int) (map[string]interface{}, error) {
- if pageSize == 0 {
- pageSize = service.PAGENUM
- }
- if page == 0 {
- page = 1
- }
- cases, err := s.dao.GetCaseList(caseids, casename, page, pageSize)
- if err != nil {
- utils.LogError("获取案场信息失败: " + err.Error())
- return nil, errors.New("获取案场信息失败")
- }
- total, err := s.dao.GetCaseCount(caseids, casename)
- if err != nil {
- utils.LogError("获取案场信息失败: " + err.Error())
- return nil, errors.New("获取案场信息失败")
- }
-
- return map[string]interface{}{
- "list": cases,
- "pagesize": pageSize,
- "pagenum": total,
- "page": page,
- }, err
- }
-
- // GetCaseByID 根据案场id获取案场
- func (s *CaseServ) GetCaseByID(caseid string) (*model.SysCase, error) {
- caseinfo, err := s.dao.GetCaseByID(caseid)
- if err != nil {
- utils.LogError("获取案场信息失败: " + err.Error())
- return nil, errors.New("获取案场信息失败")
- }
- return caseinfo, nil
- }
-
- // SaveCase 保存案场
- func (s *CaseServ) SaveCase(caseinfo model.SysCase) (*model.SysCase, error) {
- var newInfo *model.SysCase
- var err error
- if caseinfo.CaseName == "" {
- return nil, errors.New("请填写案场名称!")
- }
- if caseinfo.CaseAddress == "" {
- return nil, errors.New("请填写案场地址!")
- }
- if caseinfo.CaseIcon == "" {
- return nil, errors.New("请上传案场图片!")
- }
- if caseinfo.Coordinate == "" {
- return nil, errors.New("案场在地图上的位置不明确,请在地图上抓取地址获取经纬度!")
- }
-
- if caseinfo.CaseId == "" {
- newInfo, err = s.dao.AddCase(caseinfo)
- if err != nil {
- utils.LogError("保存案场信息失败: " + err.Error())
- return nil, errors.New("保存案场信息失败")
- }
- // 新增之后保存用户对应案场
- var userCase = model.SysUserCase{
- CaseId: newInfo.CaseId,
- UserId: newInfo.CreateUser,
- CaseName: newInfo.CaseName,
- IsBelong: 0,
- IsCreated: 1,
- }
- err = s.userdao.SaveUserCase(userCase)
- if err != nil {
- utils.LogError("保存案场信息失败: " + err.Error())
- return nil, errors.New("保存案场信息失败")
- }
- // 新增管理员对应案场
- if newInfo.CreateUser != "1" {
- var userCase = model.SysUserCase{
- CaseId: newInfo.CaseId,
- UserId: models.ADMIN_ID,
- CaseName: newInfo.CaseName,
- IsBelong: 0,
- IsCreated: 0,
- }
- err = s.userdao.SaveUserCase(userCase)
- if err != nil {
- utils.LogError("保存案场信息失败: " + err.Error())
- return nil, errors.New("保存案场信息失败")
- }
- }
- // 新增案场配置信息
- var conf = model.SysCaseConf{
- CaseId: newInfo.CaseId,
- ConfType: CONFTYPE_GOODS,
- }
- _, err = s.dao.SaveCaseConf(conf)
- } else {
- err = s.dao.UpdateCase(caseinfo)
- newInfo = &caseinfo
- if err != nil {
- utils.LogError("保存案场信息失败: " + err.Error())
- return nil, errors.New("保存案场信息失败")
- }
- err = s.dao.UpdateUserCaseName(caseinfo)
- }
- if err != nil {
- utils.LogError("保存案场信息失败: " + err.Error())
- return nil, errors.New("保存案场信息失败")
- }
- return newInfo, nil
- }
-
- // DelCase 删除案场
- func (s *CaseServ) DelCase(caseid string) error {
- err := s.dao.DelCase(caseid)
- if err != nil {
- utils.LogError("删除案场信息失败: " + err.Error())
- return errors.New("删除案场信息失败")
- }
- return nil
- }
-
- // GetAllCasesAndSales 获取所有案场
- func (s *CaseServ) GetAllCasesAndSales(org string) (map[string]interface{}, error) {
- cs, err := s.dao.GetCaseByOrg(org)
- if err != nil {
- utils.LogError("获取案场列表失败: " + err.Error())
- return nil, errors.New("获取案场列表失败")
- }
-
- csIDs := []string{}
- for _, c := range cs {
- csIDs = append(csIDs, c.CaseId)
- }
-
- users, err := s.dao.GetCaseUserByType(csIDs, models.USERTYPE_SALES)
- if err != nil {
- utils.LogError("获取案场销售失败: " + err.Error())
- return nil, errors.New("获取案场销售失败")
- }
-
- manager, err := s.dao.GetCaseUserByType(csIDs, models.USERTYPE_MANAGER)
-
- return map[string]interface{}{
- "cases": cs,
- "sales": users,
- "manager": manager,
- }, nil
- }
-
- // GetCaseConf 获取案场配置信息
- func (s *CaseServ) GetCaseConf(caseid, conftype string) (*model.SysCaseConf, error) {
- conf, err := s.dao.GetConfByCase(caseid, conftype)
- if err != nil {
- utils.LogError("获取配置信息失败: " + err.Error())
- return nil, errors.New("获取配置信息失败")
- }
- return conf, nil
- }
-
- // UpdateCaseConf 修改案场配置信息
- func (s *CaseServ) UpdateCaseConf(caseid, conftype string, status int) error {
- var conf = model.SysCaseConf{
- CaseId: caseid,
- ConfType: conftype,
- Status: status,
- }
- err := s.dao.UpdateCaseConf(conf)
- return err
- }
|