admin
2024-01-23 81da61b828e29b7745e1382dfbbaeb685dc083ef
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserVipController.java
@@ -1,177 +1,210 @@
package com.yeshi.fanli.controller.client.v1;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.entity.FileUploadResult;
import org.yeshi.utils.tencentcloud.COSManager;
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.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.vip.GiveVIPApplyInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.exception.ParamsException;
import com.yeshi.fanli.exception.user.vip.GiveVIPApplyInfoException;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService;
import com.yeshi.fanli.service.inter.user.vip.GiveVIPApplyInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.user.vip.GiveVIPApplyInfoRecordVOFactory;
import com.yeshi.fanli.vo.user.vip.GiveVIPApplyInfoRecordVO;
import net.sf.json.JSONObject;
/**
 * 会员
 * @author Administrator
 *
 */
@Controller
@RequestMapping("api/v1/user/vip")
public class UserVipController {
   // 会员申请
   @Resource
   private GiveVIPApplyInfoService giveVIPApplyInfoService;
   @Resource
   private UserVipConfigService userVipConfigService;
   @Resource
   private ThreeSaleDetailService threeSaleDetailService;
   @RequestMapping(value = "applyVip")
   public void applyVip(AcceptData acceptData, GiveVIPApplyInfo info, String callback, PrintWriter out) {
      // TODO 查询开通人是否为他的下级
      try {
         info = giveVIPApplyInfoService.addGiveVIPApplyInfo(info);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("申请成功"));
      } catch (ParamsException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请将信息填写完整"));
      } catch (GiveVIPApplyInfoException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
   }
   // 提交申请信息
   @RequestMapping(value = "uploadApplyInfo")
   public void uploadApplyInfo(AcceptData acceptData, GiveVIPApplyInfo info, String callback,
         HttpServletRequest request, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(info.getId())) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("申请ID为空"));
         return;
      }
      GiveVIPApplyInfo oldInfo = giveVIPApplyInfoService.selectByPrimaryKey(info.getId());
      if (oldInfo == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("申请记录不存在"));
         return;
      }
      if (oldInfo.getState() != GiveVIPApplyInfo.STATE_NO_INFO) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("资料以及提交"));
         return;
      }
      List<MultipartFile> files = new ArrayList<MultipartFile>();
      // 有文件
      if (request instanceof MultipartHttpServletRequest) {
         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
         Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
         for (String key : fileMap.keySet()) {
            MultipartFile file = fileMap.get(key);
            files.add(file);
         }
      }
      // 保存成功后再上传文件
      if (files.size() > 0) {
         List<String> imgList = new ArrayList<>();
         for (MultipartFile file : files) {
            String fileName = info.getSourceUid() + "_" + System.currentTimeMillis() + "_"
                  + file.getOriginalFilename();
            fileName = FilePathEnum.vipApply.getPath() + fileName;
            try {
               FileUploadResult result = COSManager.getInstance().uploadFile(file.getInputStream(), fileName);
               imgList.add(result.getUrl());
            } catch (IOException e) {
               e.printStackTrace();
            }
         }
         // 设置图片
         if (imgList.size() > 0)
            info.setImgList(imgList);
         info.setState(GiveVIPApplyInfo.STATE_NOT_VERIFY);
         giveVIPApplyInfoService.updateGiveVIPApplyInfo(info);
      }
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("资料提交成功"));
   }
   @RequestMapping(value = "getApplyRecordList")
   public void getApplyRecordList(AcceptData acceptData, Long uid, int page, String callback, PrintWriter out) {
      if (uid == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
         return;
      }
      if (Constant.IS_TEST) {
         page = 1;
      }
      List<GiveVIPApplyInfo> list = giveVIPApplyInfoService.listByTargetUid(uid, page, Constant.PAGE_SIZE);
      long count = giveVIPApplyInfoService.countByTargetUid(uid);
      String uploadInfoLink = userVipConfigService.getValueByKey("apply_vip_upload_info_link");
      String vipLink = userVipConfigService.getValueByKey("vip_link");
      List<GiveVIPApplyInfoRecordVO> recordList = new ArrayList<>();
      for (GiveVIPApplyInfo info : list) {
         recordList.add(GiveVIPApplyInfoRecordVOFactory.create(info, uploadInfoLink, vipLink));
      }
      GsonBuilder gb = new GsonBuilder().registerTypeAdapter(java.util.Date.class, new JsonSerializer<Date>() {
         public JsonElement serialize(Date arg0, Type arg1, JsonSerializationContext arg2) {
            return new JsonPrimitive(TimeUtil.getGernalTime(arg0.getTime(), "yyyy.MM.dd HH:mm"));
         }
      }).registerTypeAdapter(UserLevelEnum.class, new JsonSerializer<UserLevelEnum>() {
         public JsonElement serialize(UserLevelEnum arg0, Type arg1, JsonSerializationContext arg2) {
            return new JsonPrimitive(arg0.getName());
         }
      });
      Gson gson = gb.create();
      if (Constant.IS_TEST) {
         count = 100;
      }
      JSONObject data = new JSONObject();
      data.put("list", gson.toJson(recordList));
      data.put("count", count);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
}
package com.yeshi.fanli.controller.client.v1;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.entity.FileUploadResult;
import org.yeshi.utils.tencentcloud.COSManager;
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.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.ThreeSaleDetail;
import com.yeshi.fanli.entity.bus.user.vip.GiveVIPApplyInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.exception.ParamsException;
import com.yeshi.fanli.exception.user.vip.GiveVIPApplyInfoException;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService;
import com.yeshi.fanli.service.inter.user.vip.GiveVIPApplyInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
import org.yeshi.utils.TimeUtil;
import com.yeshi.fanli.util.factory.user.vip.GiveVIPApplyInfoRecordVOFactory;
import com.yeshi.fanli.vo.user.vip.GiveVIPApplyInfoRecordVO;
import net.sf.json.JSONObject;
/**
 * 会员
 * @author Administrator
 *
 */
@Controller
@RequestMapping("api/v1/user/vip")
public class UserVipController {
   // 会员申请
   @Resource
   private GiveVIPApplyInfoService giveVIPApplyInfoService;
   @Resource
   private UserVipConfigService userVipConfigService;
   @Resource
   private ThreeSaleDetailService threeSaleDetailService;
   @RequestMapping(value = "applyVip")
   public void applyVip(AcceptData acceptData, GiveVIPApplyInfo info, String callback, PrintWriter out) {
      // 查询开通人是否为他的下级
      ThreeSaleDetail detail = threeSaleDetailService.getByBossUidAndWorkerUid(info.getSourceUid(),
            info.getTargetUid());
      if (detail == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户不是您的粉丝"));
         return;
      }
      try {
         info = giveVIPApplyInfoService.addGiveVIPApplyInfo(info);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("申请成功"));
      } catch (ParamsException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请将信息填写完整"));
      } catch (GiveVIPApplyInfoException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
   }
   @RequestMapping(value = "getApplyInfo")
   public void getApplyInfo(AcceptData acceptData, String id, Long uid, String callback, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(id)) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请上传id"));
         return;
      }
      GiveVIPApplyInfo info = giveVIPApplyInfoService.selectByPrimaryKey(id);
      if (info == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("申请信息不存在"));
         return;
      }
      // 查询开通人是否为他的下级
      ThreeSaleDetail detail = threeSaleDetailService.getByBossUidAndWorkerUid(info.getSourceUid(),
            info.getTargetUid());
      if (detail == null && info.getTargetUid().longValue() != uid) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户不是您的粉丝"));
         return;
      }
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(info)));
   }
   // 提交申请信息
   @RequestMapping(value = "uploadApplyInfo")
   public void uploadApplyInfo(AcceptData acceptData, GiveVIPApplyInfo info, String callback,
         HttpServletRequest request, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(info.getId())) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("申请ID为空"));
         return;
      }
      GiveVIPApplyInfo oldInfo = giveVIPApplyInfoService.selectByPrimaryKey(info.getId());
      if (oldInfo == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("申请记录不存在"));
         return;
      }
      if (oldInfo.getState() != GiveVIPApplyInfo.STATE_NO_INFO) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("资料以及提交"));
         return;
      }
      List<MultipartFile> files = new ArrayList<MultipartFile>();
      // 有文件
      if (request instanceof MultipartHttpServletRequest) {
         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
         Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
         for (String key : fileMap.keySet()) {
            MultipartFile file = fileMap.get(key);
            files.add(file);
         }
      }
      // 保存成功后再上传文件
      if (files.size() > 0) {
         List<String> imgList = new ArrayList<>();
         for (MultipartFile file : files) {
            String fileName = info.getSourceUid() + "_" + System.currentTimeMillis() + "_"
                  + file.getOriginalFilename();
            fileName = FilePathEnum.vipApply.getPath() + fileName;
            try {
               FileUploadResult result = COSManager.getInstance().uploadFile(file.getInputStream(), fileName);
               imgList.add(result.getUrl());
            } catch (IOException e) {
               e.printStackTrace();
            }
         }
         // 设置图片
         if (imgList.size() > 0)
            info.setImgList(imgList);
         info.setState(GiveVIPApplyInfo.STATE_NOT_VERIFY);
      }
      giveVIPApplyInfoService.updateGiveVIPApplyInfo(info);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("资料提交成功"));
   }
   @RequestMapping(value = "getApplyRecordList")
   public void getApplyRecordList(AcceptData acceptData, Long uid, int page, String callback, PrintWriter out) {
      if (uid == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
         return;
      }
      if (Constant.IS_TEST) {
         page = 1;
      }
      List<GiveVIPApplyInfo> list = giveVIPApplyInfoService.listBySourceUid(uid, page, Constant.PAGE_SIZE);
      long count = giveVIPApplyInfoService.countBySourceUid(uid);
      String uploadInfoLink = userVipConfigService.getValueByKey("apply_vip_upload_info_link");
      String vipLink = userVipConfigService.getValueByKey("vip_link");
      List<GiveVIPApplyInfoRecordVO> recordList = new ArrayList<>();
      for (GiveVIPApplyInfo info : list) {
         recordList.add(GiveVIPApplyInfoRecordVOFactory.create(info, uploadInfoLink, vipLink));
      }
      GsonBuilder gb = new GsonBuilder().registerTypeAdapter(java.util.Date.class, new JsonSerializer<Date>() {
         public JsonElement serialize(Date arg0, Type arg1, JsonSerializationContext arg2) {
            return new JsonPrimitive(TimeUtil.getGernalTime(arg0.getTime(), "yyyy.MM.dd HH:mm"));
         }
      }).registerTypeAdapter(UserLevelEnum.class, new JsonSerializer<UserLevelEnum>() {
         public JsonElement serialize(UserLevelEnum arg0, Type arg1, JsonSerializationContext arg2) {
            return new JsonPrimitive(arg0.getName());
         }
      });
      Gson gson = gb.create();
      // if (Constant.IS_TEST) {
      // count = 100;
      // }
      JSONObject data = new JSONObject();
      data.put("list", gson.toJson(recordList));
      data.put("count", count);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
}