ziwen 1 年之前
父节点
当前提交
bab91187e4
共有 4 个文件被更改,包括 144 次插入13 次删除
  1. 62 0
      controllers/company.go
  2. 56 4
      models/cygx/activity_special_trip_bill.go
  3. 9 0
      routers/commentsRouter.go
  4. 17 9
      services/cygx/activity_special.go

+ 62 - 0
controllers/company.go

@@ -9088,3 +9088,65 @@ func (this *CompanyTodoController) CompanyActivityPointsBill() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 获取流水信息接口
+// @Description 获取流水信息接口
+// @Param   CompanyId   query   int  true       "客户id"
+// @Success 200 {object} company.CygxActivityPointsBillListResp
+// @router /company/activity/special/points/bill [get]
+func (this *CompanyTodoController) CompanyActivitySpecialPointsBill() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	companyId, _ := this.GetInt("CompanyId")
+	if companyId <= 0 {
+		br.Msg = "请选择客户"
+		return
+	}
+	// 获取流水信息
+	var condition string
+	var pars []interface{}
+
+	condition += ` AND company_id = ? `
+	pars = append(pars, companyId)
+
+	//查询当年的数据
+	condition += ` AND b.create_time >= ?  `
+	pars = append(pars, time.Now().Format(utils.FormatYearDate)+"-01-01")
+	list, err := cygx.GetCygxActivitySpecialTripBillDetailList(condition, pars)
+	if err != nil {
+		br.Msg = "获取任务信息失败"
+		br.ErrMsg = "获取任务信息失败,err:" + err.Error()
+		return
+	}
+	resp := make([]*cygx.CygxActivitySpecialPointsBillResp, 0)
+
+
+	specialSurplus, err := cygxService.GetSpecialSurplusByCompany(companyId)
+	if err != nil {
+		br.Msg = "获取专项调研剩余次数失败"
+		br.ErrMsg = "获取专项调研剩余次数失败,err:" + err.Error()
+		return
+	}
+	for _, v := range list {
+		item := cygx.CygxActivitySpecialPointsBillResp{
+			Id:           v.Id,
+			Content:      "",
+			Total:        specialSurplus,
+			CreateTime:   v.CreateTime.Format(utils.FormatDateTime),
+			CompanyId:    v.CompanyId,
+			CompanyName:  v.CompanyName,
+			RealName:     v.RealName,
+			BillDetailed: v.BillDetailed,
+		}
+		resp = append(resp, &item)
+	}
+
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 56 - 4
models/cygx/activity_special_trip_bill.go

@@ -76,15 +76,67 @@ func GetCygxActivitySpecialTripBillList(condition string, pars []interface{}) (i
 	return
 }
 
+type AirborneCount struct {
+	Count             int
+	ChartPermissionId int ` description:"品种权限ID"`
+}
+
 // 获取空降的公司报名的记录
-func GetActivitySpecialTripAirborneCountByActivitySpecial(condition string, pars []interface{}) (count int, err error) {
-	sqlCount := ` SELECT COUNT(1) AS count
+func GetActivitySpecialTripAirborneCountByActivitySpecial(condition string, pars []interface{}) (items []*AirborneCount, err error) {
+	sqlCount := ` SELECT chart_permission_id,COUNT(1) AS count
 		FROM
 			cygx_activity_special_meeting_detail AS t
 			INNER JOIN cygx_activity_special AS a ON a.activity_id = t.activity_id 
 		WHERE
-			 1= 1  	AND YEAR ( t.create_time )= YEAR (NOW()) ` + condition
+			 1= 1  	AND YEAR ( t.create_time )= YEAR (NOW()) ` + condition + `GROUP BY chart_permission_id`
 	o := orm.NewOrm()
-	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	_, err = o.Raw(sqlCount, pars).QueryRows(&items)
 	return
 }
+
+type CygxActivitySpecialTripBillDetailList struct {
+	Id                  int       `orm:"column(id);pk"`
+	UserId              int       `description:"用户id,多个用,隔开"`
+	ActivityId          int       `description:"活动ID"`
+	ActivityName        string    `description:"活动标题"`
+	CreateTime          time.Time `description:"创建时间"`
+	Mobile              string    `description:"手机号"`
+	Email               string    `description:"邮箱号"`
+	CompanyId           int       `description:"公司ID"`
+	CompanyName         string    `description:"公司名称"`
+	RealName            string    `description:"用户实际名称"`
+	AdminId             int       `description:"销售/管理员ID"`
+	Source              int       `description:"来源,1小程序,2后台添加, 3开发人员手动添加"`
+	BillDetailed        int       `description:"流水明细,判断是进账还是出账"`
+	DoType              int       `description:"操作方式,1报名,2取消报名"`
+	RegisterPlatform    int       `description:"来源 1小程序,2:网页"`
+	ChartPermissionId   int       `description:"行业id"`
+	ChartPermissionName string    `description:"行业名称"`
+}
+
+func GetCygxActivitySpecialTripBillDetailList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripBillList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			b.*,
+			a.activity_name,
+			c.chart_permission_name 
+		FROM
+			cygx_activity_special_trip_bill AS b
+			INNER JOIN chart_permission AS c ON c.chart_permission_id = b.chart_permission_id 
+			INNER JOIN cygx_activity AS a ON a.activity_id = b.activity_id
+		WHERE
+			1 = 1` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+type CygxActivitySpecialPointsBillResp struct {
+	Id           int     `gorm:"column:id;primary_key;AUTO_INCREMENT"`
+	Content      string  `gorm:"column:content" `                                 // 内容说明
+	Total        string  `gorm:"column:points;default:0;NOT NULL" `               // 合计
+	CreateTime   string  `gorm:"column:create_time" `                             // 创建时间
+	CompanyId    int     `gorm:"column:company_id;default:0" `                    // 公司ID
+	CompanyName  string  `gorm:"column:company_name" `                            // 公司名称
+	RealName     string  `gorm:"column:real_name"`                                // 用户实际名称
+	BillDetailed int `gorm:"column:bill_detailed;default:0;NOT NULL" json:""` // 流水明细,判断是进账还是出账
+}

+ 9 - 0
routers/commentsRouter.go

@@ -8683,6 +8683,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyTodoController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyTodoController"],
+        beego.ControllerComments{
+            Method: "CompanyActivitySpecialPointsBill",
+            Router: `/company/activity/special/points/bill`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyTodoController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyTodoController"],
         beego.ControllerComments{
             Method: "CompanyTryOutDayList",

+ 17 - 9
services/cygx/activity_special.go

@@ -223,10 +223,10 @@ func GetSpecialSurplusByCompany(companyId int) (specialSurplus string, err error
 	if companyDetail.Status == "永续" {
 		specialSurplus = "不限次数"
 	}
-
+	chartMap := map[int]string{utils.YI_YAO_ID:utils.YI_YAO_NAME, utils.XIAO_FEI_ID:utils.XIAO_FEI_NAME, utils.KE_JI_ID:utils.KE_JI_NAME, utils.ZHI_ZAO_ID:utils.ZHI_ZAO_NAME}
+	chartNumMap := map[int]int{utils.YI_YAO_ID:0, utils.XIAO_FEI_ID:0, utils.KE_JI_ID:0, utils.ZHI_ZAO_ID:0}
 	if companyDetail.Status == "正式" {
 		userType, packageType, _, _, _ := GetUserType(companyId)
-		var airborneTota int
 		if userType == 2 {
 			var condition string
 			var pars []interface{}
@@ -234,11 +234,15 @@ func GetSpecialSurplusByCompany(companyId int) (specialSurplus string, err error
 			condition += ` AND company_id = ? `
 			pars = append(pars, companyId)
 
-			airborneTota, e = cygx.GetActivitySpecialTripAirborneCountByActivitySpecial(condition, pars)
+			airborneList, e := cygx.GetActivitySpecialTripAirborneCountByActivitySpecial(condition, pars)
 			if e != nil {
 				err = errors.New("GetActivitySpecialTripAirborneCountByActivitySpecial, Err: " + e.Error())
 				return
 			}
+			ariborneMap := make(map[int]int)
+			for _, v := range airborneList {
+				ariborneMap[v.ChartPermissionId] = v.Count
+			}
 			//condition += ` AND is_valid = 1 `
 			//查询当年的数据
 			condition += ` AND create_time >= ?  `
@@ -248,19 +252,23 @@ func GetSpecialSurplusByCompany(companyId int) (specialSurplus string, err error
 				err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
 				return
 			}
-			var TripBillNum int
+			TripBillNumMap := make(map[int]int)
 			for _, v := range listTripBill {
-				TripBillNum += v.BillDetailed
+				TripBillNumMap[v.ChartPermissionId] += v.BillDetailed
 			}
 			// CRM13.2 70w客户有16次专项调研, 45w有10次
 			packageTypeMap := map[int]int{1: 16, 2: 10}
 			totalTrip := packageTypeMap[packageType]
 
-			tripRemaining := totalTrip - airborneTota + TripBillNum
-			if tripRemaining < 0 {
-				tripRemaining = 0
+			for k, _ := range chartNumMap {
+				tripRemaining := totalTrip - ariborneMap[k] + TripBillNumMap[k]
+				if tripRemaining < 0 {
+					tripRemaining = 0
+				}
+				specialSurplus += chartMap[k] + strconv.Itoa(tripRemaining) + "次,"
 			}
-			specialSurplus = strconv.Itoa(tripRemaining) + "次"
+			specialSurplus = strings.TrimRight(specialSurplus, ",")
+
 			//tripRemaining = 12 - tripTota
 		} else {
 			list, e := company.GetCompanyReportPermissionUpgrade(companyId, 2)