admin
2024-10-16 62a447d89331aee1feae7724c7616aa1bb2cfe79
fanli/src/main/java/com/yeshi/fanli/controller/admin/user/vip/UserVipApplyAdminController.java
@@ -1,226 +1,274 @@
package com.yeshi.fanli.controller.admin.user.vip;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.IPUtil;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.vip.GiveVIPApplyInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.exception.user.vip.GiveVIPApplyInfoException;
import com.yeshi.fanli.exception.user.vip.UserVIPPreInfoException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.vip.GiveVIPApplyInfoService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("admin/new/api/v1/vip")
public class UserVipApplyAdminController {
   @Resource
   private GiveVIPApplyInfoService giveVIPApplyInfoService;
   @Resource
   private UserInfoService userInfoService;
   /**
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param key 搜索:暂只提供uid
    * @param state 状态:
    * @param out
    */
   @RequestMapping(value = "queryVip")
   public void queryVip(String callback, Integer pageIndex, Integer pageSize, String key, Integer state,
         PrintWriter out) {
      try {
         Long targetUid = null;
         try {
            targetUid = Long.parseLong(key);
         } catch (Exception e) {
         }
         List<GiveVIPApplyInfo> list = giveVIPApplyInfoService.listByStateAndTargetUid(targetUid, state, pageIndex,
               pageSize);
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         for (GiveVIPApplyInfo info : list) {
            // 组织用户信息
            UserInfo userInfo = userInfoService.getUserById(info.getTargetUid());
            UserInfo simpleInfo = new UserInfo(userInfo.getId());
            simpleInfo.setNickName(userInfo.getNickName());
            simpleInfo.setPortrait(userInfo.getPortrait());
            info.setTargetUser(simpleInfo);
            // 组织其他平台信息
            if (info.getHasDoOtherPlatform() != null && info.getHasDoOtherPlatform()) {
               String st = "平台:" + (StringUtil.isNullOrEmpty(info.getOtherPlatformName()) ? "未知"
                     : info.getOtherPlatformName());
               st += "\n粉丝数:";
               st += "直接粉丝数(" + (info.getOtherDirectTeams() == null ? "未知" : info.getOtherDirectTeams());
               st += ") 间接粉丝数(" + (info.getOtherInDirectTeams() == null ? "未知" : info.getOtherInDirectTeams())
                     + ")";
               st += "\n平台等级:" + (StringUtil.isNullOrEmpty(info.getOtherLevel()) ? "未知" : info.getOtherLevel());
               st += "\n月均收入:" + (StringUtil.isNullOrEmpty(info.getOtherMonthIncome()) ? "未知"
                     : info.getOtherMonthIncome());
               info.setOtherPlatformInfo(st);
            } else {
               info.setOtherPlatformInfo("暂无");
            }
         }
         long count = giveVIPApplyInfoService.countByStateAndTargetUid(targetUid, state);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         GsonBuilder gsonBuilder = new GsonBuilder().registerTypeAdapter(UserLevelEnum.class,
               new JsonSerializer<UserLevelEnum>() {
                  public JsonElement serialize(UserLevelEnum arg0, Type arg1, JsonSerializationContext arg2) {
                     return new JsonPrimitive(arg0.getName());
                  }
               });
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create();
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", gson.toJson(list));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 超级会员升级通过
    * @param callback
    * @param id
    * @param out
    * @param request
    * @throws UserVIPPreInfoException
    */
   @RequestSerializableByKey(key = "'passApplyVIP-' +#id")
   @RequestMapping(value = "passVIP")
   public void passVIP(String callback, String id, PrintWriter out, HttpServletRequest request) {
      try {
         /* 检验是否登陆 */
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         if (admin == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆。"));
            return;
         }
         giveVIPApplyInfoService.pass(id, admin.getId());
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功"));
         LogHelper.userInfo(
               "[ip:" + IPUtil.getRemotIP(request) + "]" + admin.getName() + "通过了[id=" + id + "]的升级会员申请!");
      } catch (GiveVIPApplyInfoException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
         return;
      } catch (UserVIPPreInfoException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      }
   }
   /**
    * 超级会员升级拒绝
    * @param callback
    * @param id
    * @param reason
    * @param out
    * @param request
    */
   @RequestMapping(value = "rejectVIP")
   public void rejectVIP(String callback, String id, String reason, PrintWriter out, HttpServletRequest request) {
      try {
         /* 检验是否登陆 */
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         if (admin == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆"));
            return;
         }
         giveVIPApplyInfoService.reject(id, admin.getId(), reason);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("拒绝成功"));
         LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 拒绝提现id=" + id
               + "的升级超级会员申请不存在!");
      } catch (GiveVIPApplyInfoException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
         return;
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
         return;
      }
   }
   @RequestMapping(value = "apply")
   public void apply(String callback, Long uid, String level, String applyReason, PrintWriter out,
         HttpServletRequest request) {
      try {
         /* 检验是否登陆 */
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         if (admin == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆"));
            return;
         }
         UserInfo user = userInfoService.selectAvailableByPrimaryKey(uid);
         if (user == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户不存在或已经被封禁"));
            return;
         }
         GiveVIPApplyInfo info = new GiveVIPApplyInfo();
         info.setApplyReason(applyReason);
         info.setTargetUid(uid);
         info.setSourceUid(uid);
         info.setMark(String.format("管理员(%s)代为申请", admin.getName()));
         info.setLevel(UserLevelEnum.valueOf(level));
         giveVIPApplyInfoService.addGiveVIPApplyInfo(info);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("成功"));
      } catch (GiveVIPApplyInfoException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
         return;
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
         return;
      }
   }
}
package com.yeshi.fanli.controller.admin.user.vip;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.yeshi.fanli.entity.accept.AdminAcceptData;
import com.yeshi.fanli.exception.user.vip.UserVIPUpgradeException;
import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.IPUtil;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.vip.GiveVIPApplyInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.exception.user.vip.GiveVIPApplyInfoException;
import com.yeshi.fanli.exception.user.vip.UserVIPPreInfoException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.vip.GiveVIPApplyInfoService;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("admin/new/api/v1/vip")
public class UserVipApplyAdminController {
    @Resource
    private GiveVIPApplyInfoService giveVIPApplyInfoService;
    @Resource
    private UserInfoService userInfoService;
    @Resource
    private UserVIPPreInfoService userVIPPreInfoService;
    /**
     * @param callback
     * @param pageIndex
     * @param pageSize
     * @param key       搜索:暂只提供uid
     * @param state     状态:
     * @param out
     */
    @RequestMapping(value = "queryVip")
    public void queryVip(AdminAcceptData acceptData, String callback, Integer pageIndex, Integer pageSize, String key, Integer state,
                         PrintWriter out) {
        try {
            Long targetUid = null;
            try {
                targetUid = Long.parseLong(key);
            } catch (Exception e) {
            }
            List<GiveVIPApplyInfo> list = giveVIPApplyInfoService.listByStateAndTargetUid(targetUid, state, pageIndex,
                    pageSize);
            if (list == null || list.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
                return;
            }
            for (GiveVIPApplyInfo info : list) {
                // 组织用户信息
                UserInfo userInfo = userInfoService.selectByPKey(info.getTargetUid());
                UserInfo simpleInfo = new UserInfo(userInfo.getId());
                simpleInfo.setNickName(userInfo.getNickName());
                simpleInfo.setPortrait(userInfo.getPortrait());
                info.setTargetUser(simpleInfo);
                // 组织其他平台信息
                if (info.getHasDoOtherPlatform() != null && info.getHasDoOtherPlatform()) {
                    String st = "平台:" + (StringUtil.isNullOrEmpty(info.getOtherPlatformName()) ? "未知"
                            : info.getOtherPlatformName());
                    st += "\n粉丝数:";
                    st += "直接粉丝数(" + (info.getOtherDirectTeams() == null ? "未知" : info.getOtherDirectTeams());
                    st += ") 间接粉丝数(" + (info.getOtherInDirectTeams() == null ? "未知" : info.getOtherInDirectTeams())
                            + ")";
                    st += "\n平台等级:" + (StringUtil.isNullOrEmpty(info.getOtherLevel()) ? "未知" : info.getOtherLevel());
                    st += "\n月均收入:" + (StringUtil.isNullOrEmpty(info.getOtherMonthIncome()) ? "未知"
                            : info.getOtherMonthIncome());
                    info.setOtherPlatformInfo(st);
                } else {
                    info.setOtherPlatformInfo("暂无");
                }
            }
            long count = giveVIPApplyInfoService.countByStateAndTargetUid(targetUid, state);
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
            PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
            GsonBuilder gsonBuilder = new GsonBuilder().registerTypeAdapter(UserLevelEnum.class,
                    new JsonSerializer<UserLevelEnum>() {
                        public JsonElement serialize(UserLevelEnum arg0, Type arg1, JsonSerializationContext arg2) {
                            return new JsonPrimitive(arg0.getName());
                        }
                    });
            gsonBuilder.serializeNulls();
            Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create();
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            data.put("result_list", gson.toJson(list));
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
            e.printStackTrace();
        }
    }
    /**
     * 超级会员升级通过
     *
     * @param callback
     * @param id
     * @param out
     * @param request
     * @throws UserVIPPreInfoException
     */
    @RequestSerializableByKey(key = "'passApplyVIP-' +#id")
    @RequestMapping(value = "passVIP")
    public void passVIP(AdminAcceptData acceptData, String callback, String id, PrintWriter out, HttpServletRequest request) {
        try {
            /* 检验是否登陆 */
            AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
            if (admin == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆。"));
                return;
            }
            giveVIPApplyInfoService.pass(id, admin.getId());
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功"));
            LogHelper.userInfo(
                    "[ip:" + IPUtil.getRemotIP(request) + "]" + admin.getName() + "通过了[id=" + id + "]的升级会员申请!");
        } catch (GiveVIPApplyInfoException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
            return;
        } catch (UserVIPPreInfoException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
        }
    }
    /**
     * 超级会员升级拒绝
     *
     * @param callback
     * @param id
     * @param reason
     * @param out
     * @param request
     */
    @RequestMapping(value = "rejectVIP")
    public void rejectVIP(AdminAcceptData acceptData, String callback, String id, String reason, PrintWriter out, HttpServletRequest request) {
        try {
            /* 检验是否登陆 */
            AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
            if (admin == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆"));
                return;
            }
            giveVIPApplyInfoService.reject(id, admin.getId(), reason);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("拒绝成功"));
            LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 拒绝提现id=" + id
                    + "的升级超级会员申请不存在!");
        } catch (GiveVIPApplyInfoException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
            return;
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
            return;
        }
    }
    @RequestMapping(value = "apply")
    public void apply(AdminAcceptData acceptData, String callback, Long uid, String level, String applyReason, PrintWriter out,
                      HttpServletRequest request) {
        try {
            /* 检验是否登陆 */
            AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
            if (admin == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆"));
                return;
            }
            UserInfo user = userInfoService.selectAvailableByPrimaryKey(uid);
            if (user == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户不存在或已经被封禁"));
                return;
            }
            GiveVIPApplyInfo info = new GiveVIPApplyInfo();
            info.setApplyReason(applyReason);
            info.setTargetUid(uid);
            info.setSourceUid(uid);
            info.setMark(String.format("管理员(%s)代为申请", admin.getName()));
            info.setLevel(UserLevelEnum.valueOf(level));
            giveVIPApplyInfoService.addGiveVIPApplyInfo(info);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("成功"));
        } catch (GiveVIPApplyInfoException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
            return;
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
            return;
        }
    }
    /**
     * 申请高级会员
     *
     * @param acceptData
     * @param callback
     * @param uid
     * @param type       1-订单  2-邀请
     * @param out
     * @param request
     */
    @RequestMapping(value = "applyHighLevel")
    public void applyHighLevel(AdminAcceptData acceptData, String callback, Long uid, int type, PrintWriter out,
                               HttpServletRequest request) {
        /* 检验是否登陆 */
        AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
        if (admin == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆"));
            return;
        }
        UserInfo user = userInfoService.selectAvailableByPrimaryKey(uid);
        if (user == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户不存在或已经被封禁"));
            return;
        }
        try {
            if (type == 1) {
                userVIPPreInfoService.upgradeVipByMyOrder(uid);
            } else
                userVIPPreInfoService.upgradeVipByTeamNum(uid);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("成功"));
        } catch (UserVIPUpgradeException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMessage()));
        }
    }
}