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));
|
}
|
|
}
|