|
- package member_center
-
- import (
- "applet/app/db"
- "applet/app/e"
- md2 "applet/app/md/member_center"
- svc "applet/app/svc/member_center"
- "applet/app/utils"
- "code.fnuoos.com/EggPlanet/egg_models.git/src/implement"
- "code.fnuoos.com/EggPlanet/egg_models.git/src/model"
- "code.fnuoos.com/EggPlanet/egg_system_rules.git/enum"
- "errors"
- "github.com/gin-gonic/gin"
- "time"
- )
-
- // GetLevelList
- // @Summary 制度中心-会员中心-等级管理(获取)
- // @Tags 会员中心
- // @Description 标签管理(获取)
- // @Accept json
- // @Produce json
- // @param Authorization header string true "验证参数Bearer和token空格拼接"
- // @Param limit query int true "每页大小"
- // @Param page query int true "页数"
- // @Success 200 {object} md.GetLevelListResp "具体数据"
- // @Failure 400 {object} md.Response "具体错误"
- // @Router /api/memberCenter/levelManagement/getLevelList [get]
- func GetLevelList(c *gin.Context) {
- page := c.DefaultQuery("page", "1")
- limit := c.DefaultQuery("limit", "10")
-
- list, total, err := svc.LevelManagementGetLevelList(page, limit)
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
-
- resp := md2.GetLevelListResp{
- List: list,
- Paginate: md2.Paginate{
- Limit: utils.StrToInt(limit),
- Page: utils.StrToInt(page),
- Total: total,
- },
- }
-
- e.OutSuc(c, resp, nil)
- }
-
- // GetOneLevel
- // @Summary 制度中心-会员中心-等级管理-等级明细(获取)
- // @Tags 会员中心
- // @Description 等级明细(获取)
- // @Accept json
- // @Produce json
- // @param Authorization header string true "验证参数Bearer和token空格拼接"
- // @Param level_id query int true "等级 ID"
- // @Success 200 {object} md.GetOneLevelResp "具体数据"
- // @Failure 400 {object} md.Response "具体错误"
- // @Router /api/memberCenter/levelManagement/getOneLevel [get]
- func GetOneLevel(c *gin.Context) {
- id := c.Query("level_id")
- if id == "" {
- e.OutErr(c, e.ERR_INVALID_ARGS, errors.New("必须传入等级ID"))
- return
- }
-
- taskType := []map[string]interface{}{
- {
- "name": enum.UserLevelTaskType.String(enum.DirectPushMembersNum),
- "value": enum.DirectPushMembersNum,
- },
- {
- "name": enum.UserLevelTaskType.String(enum.DirectPushActiveDayNum),
- "value": enum.DirectPushActiveDayNum,
- },
- {
- "name": enum.UserLevelTaskType.String(enum.DirectPushLevel),
- "value": enum.DirectPushLevel,
- },
- }
-
- levelDb := implement.NewUserLevelDb(db.Db)
- level, err := levelDb.UserLevelByID(id)
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
-
- userLevelTaskDb := implement.NewUserLevelTaskDb(db.Db)
- tasks, err := userLevelTaskDb.UserLevelTaskFindByParams(map[string]interface{}{
- "key": "level_id",
- "value": id,
- })
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
-
- resp := md2.GetOneLevelResp{
- TaskType: taskType,
- LevelID: level.Id,
- IsUse: level.IsUse,
- LevelName: level.LevelName,
- Memo: level.Memo,
- AutoUpdate: level.AutoUpdate,
- ChoosableNum: level.ChoosableNum,
- LevelWeight: level.LevelWeight,
- UserLevelTasks: tasks,
- }
-
- e.OutSuc(c, resp, nil)
- }
-
- // UpdateLevel
- // @Summary 制度中心-会员中心-等级管理(更新)
- // @Tags 会员中心
- // @Description 等级管理(更新)
- // @Accept json
- // @Produce json
- // @param Authorization header string true "验证参数Bearer和token空格拼接"
- // @Param req body md.UpdateLevelReq true "需要修改的等级信息"
- // @Success 200 {string} "success"
- // @Failure 400 {object} md.Response "具体错误"
- // @Router /api/memberCenter/levelManagement/updateLevel [post]
- func UpdateLevel(c *gin.Context) {
- var req *md2.UpdateLevelReq
- if err := c.ShouldBindJSON(&req); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS, err.Error())
- return
- }
- var forceColumns []string
- level := &model.UserLevel{
- Id: utils.StrToInt(req.LevelID),
- LevelName: req.LevelName,
- Memo: req.Memo,
- ChoosableNum: utils.StrToInt(req.ChoosableNum),
- }
- if req.LevelWeight != "" {
- level.LevelWeight = utils.StrToInt(req.LevelWeight)
- forceColumns = append(forceColumns, "level_weight")
- }
- levelDb := implement.NewUserLevelDb(db.Db)
- if req.IsUse == "0" || req.IsUse == "1" {
- // 查询当前等级状态是否被改变
- oldLevel, err := levelDb.UserLevelByID(req.LevelID)
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- if utils.StrToInt(req.IsUse) != oldLevel.IsUse {
- // 判断当前该等级有没有被使用
- userDb := implement.NewUserDb(db.Db)
- has, err := userDb.UserExistByParams(map[string]interface{}{
- "key": "level",
- "value": req.LevelID,
- })
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- if has {
- e.OutErr(c, e.ERR, errors.New("该等级下存在会员,无法关闭该会员等级,请移除对应等级下会员或将会员移动到其他等级").Error())
- return
- }
- }
-
- level.IsUse = utils.StrToInt(req.IsUse)
- forceColumns = append(forceColumns, "is_use")
- }
- if req.AutoUpdate == "0" || req.AutoUpdate == "1" {
- level.AutoUpdate = utils.StrToInt(req.AutoUpdate)
- forceColumns = append(forceColumns, "auto_update")
- }
-
- session := db.Db.NewSession()
- defer session.Close()
-
- // 1. 更新等级信息
- affected, err := levelDb.UserLevelUpdateBySession(session, req.LevelID, level, forceColumns...)
- if err != nil {
- if err.Error() == "no columns found to be updated" {
- e.OutSuc(c, affected, nil)
- return
- }
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
-
- // 2. 更新任务信息
- // 2.1 删除关联任务
- taskDb := implement.NewUserLevelTaskDb(db.Db)
- _, err = taskDb.UserLevelTaskDeleteByParamsBySession(session, map[string]interface{}{
- "key": "level_id",
- "value": req.LevelID,
- })
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
-
- // 2.2 添加更新后的任务
- if len(req.UserLevelTasks) > 0 {
- err = svc.BatchAddLevelTask(session, req.UserLevelTasks, utils.StrToInt(req.LevelID))
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- }
-
- err = session.Commit()
- if err != nil {
- session.Rollback()
- e.OutErr(c, e.ERR_DB_ORM, nil)
- return
- }
- e.OutSuc(c, "success", nil)
- }
-
- // AddLevel
- // @Summary 制度中心-会员中心-等级管理(新增)
- // @Tags 会员中心
- // @Description 等级管理(新增)
- // @Accept json
- // @Produce json
- // @param Authorization header string true "验证参数Bearer和token空格拼接"
- // @Param req body md.AddLevelReq true "需要新增的等级信息"
- // @Success 200 {int} "新增等级ID"
- // @Failure 400 {object} md.Response "具体错误"
- // @Router /api/memberCenter/levelManagement/addLevel [post]
- func AddLevel(c *gin.Context) {
- var req *md2.AddLevelReq
- if err := c.ShouldBindJSON(&req); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS, err.Error())
- return
- }
-
- level := &model.UserLevel{
- LevelName: req.LevelName,
- Memo: req.Memo,
- ChoosableNum: utils.StrToInt(req.ChoosableNum),
- CreateAt: time.Now().Format("2006-01-02 15:04:05"),
- }
- if req.LevelWeight != "" {
- level.LevelWeight = utils.StrToInt(req.LevelWeight)
- }
- if req.IsUse == "0" || req.IsUse == "1" {
- level.LevelWeight = utils.StrToInt(req.IsUse)
- }
- if req.AutoUpdate == "0" || req.AutoUpdate == "1" {
- level.AutoUpdate = utils.StrToInt(req.AutoUpdate)
- }
-
- session := db.Db.NewSession()
- defer session.Close()
-
- // 1. 创建等级信息
- levelDb := implement.NewUserLevelDb(db.Db)
- id, err := levelDb.UserLevelInsertBySession(session, level)
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
-
- // 2. 创建任务信息
- if len(req.UserLevelTasks) > 0 {
- err = svc.BatchAddLevelTask(session, req.UserLevelTasks, id)
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- }
-
- err = session.Commit()
- if err != nil {
- session.Rollback()
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- e.OutSuc(c, id, nil)
- }
-
- // DeleteLevelTask
- // @Summary 制度中心-会员中心-等级管理-等级任务(删除)
- // @Tags 会员中心
- // @Description 等级任务(删除)
- // @Accept json
- // @Produce json
- // @param Authorization header string true "验证参数Bearer和token空格拼接"
- // @Param req body md.DeleteTaskReq true "需要删除的等级任务ID"
- // @Success 200 {int} "成功删除数据数量"
- // @Failure 400 {object} md.Response "具体错误"
- // @Router /api/memberCenter/levelManagement/deleteLevelTask [delete]
- func DeleteLevelTask(c *gin.Context) {
- var req *md2.DeleteTaskReq
- if err := c.ShouldBindJSON(&req); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS, err.Error())
- return
- }
-
- taskDb := implement.NewUserLevelTaskDb(db.Db)
- session := db.Db.Where("")
- // 不需要使用事务
- affected, err := taskDb.UserLevelTaskDeleteByParamsBySession(session, map[string]interface{}{
- "key": "id",
- "value": req.TaskID,
- })
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- e.OutSuc(c, affected, nil)
- }
-
- // DeleteLevel
- // @Summary 制度中心-会员中心-等级管理(删除)
- // @Tags 会员中心
- // @Description 等级管理(删除)
- // @Accept json
- // @Produce json
- // @param Authorization header string true "验证参数Bearer和token空格拼接"
- // @Param req body md.DeleteLevelReq true "需要删除的等级 ID"
- // @Success 200 {int} "成功删除数据数量"
- // @Failure 400 {object} md.Response "具体错误"
- // @Router /api/memberCenter/levelManagement/deleteLevel [delete]
- func DeleteLevel(c *gin.Context) {
- var req *md2.DeleteLevelReq
- if err := c.ShouldBindJSON(&req); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS, err.Error())
- return
- }
-
- userDb := implement.NewUserDb(db.Db)
- exist, err := userDb.UserExistByParams(map[string]interface{}{
- "key": "level",
- "value": req.LevelID,
- })
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- if exist {
- e.OutErr(c, e.ERR, errors.New("该等级下存在会员,无法删除,请移除对应等级下会员或将会员移动到其他等级").Error())
- return
- }
-
- session := db.Db.NewSession()
- defer session.Close()
- session.Begin()
- levelDb := implement.NewUserLevelDb(db.Db)
- affected, err := levelDb.UserLevelDeleteBySession(session, req.LevelID)
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- taskDb := implement.NewUserLevelTaskDb(db.Db)
- taskAffected, err := taskDb.UserLevelTaskDeleteByParamsBySession(session, map[string]interface{}{
- "key": "level_id",
- "value": req.LevelID,
- })
- if err != nil {
- return
- }
- err = session.Commit()
- if err != nil {
- session.Rollback()
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- affected += taskAffected
- e.OutSuc(c, affected, nil)
- }
|