package com.yeshi.fanli.controller.admin;
|
|
import java.io.PrintWriter;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
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.yeshi.utils.JsonUtil;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.yeshi.fanli.controller.admin.utils.AdminUtils;
|
import com.yeshi.fanli.dto.money.AccountDetails;
|
import com.yeshi.fanli.entity.bus.user.BindingAccount;
|
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
|
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
|
import com.yeshi.fanli.entity.bus.user.ThreeSale;
|
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.bus.user.UserRank;
|
import com.yeshi.fanli.entity.common.AdminUser;
|
import com.yeshi.fanli.entity.money.UserMoneyDetail;
|
import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException;
|
import com.yeshi.fanli.service.inter.count.UserInfoCountService;
|
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
|
import com.yeshi.fanli.service.inter.user.BindingAccountService;
|
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
|
import com.yeshi.fanli.service.inter.user.UserAccountService;
|
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
|
import com.yeshi.fanli.service.inter.user.UserInfoDeleteRecordService;
|
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
import com.yeshi.fanli.service.inter.user.UserInfoService;
|
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
|
import com.yeshi.fanli.service.inter.user.UserRankService;
|
import com.yeshi.fanli.tag.PageEntity;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.GsonUtil;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.factory.AccountDetailsFactory;
|
import com.yeshi.fanli.vo.user.UserInfoVO;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
@Controller
|
@RequestMapping("admin/new/api/v1/user")
|
public class UserInfoAdminController {
|
@Resource
|
private UserInfoService userInfoService;
|
|
@Resource
|
private ThreeSaleSerivce threeSaleService;
|
|
@Resource
|
private BindingAccountService bindingAccountService;
|
|
@Resource
|
private UserInfoCountService userInfoCountService;
|
|
@Resource
|
private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
|
|
@Resource
|
private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private UserRankService userRankService;
|
|
@Resource
|
private UserMoneyDetailService userMoneyDetailService;
|
|
@Resource
|
private UserInfoDeleteRecordService userInfoDeleteRecordService;
|
|
@Resource
|
private UserAccountService userAccountService;
|
|
/**
|
* 查询用户信息列表 正常用户/异常用户
|
*
|
* @param callback
|
* @param pageIndex
|
* @param key
|
* 查询条件
|
* @param userType
|
* 用户类型:金冠、银冠、铜冠
|
* @param days
|
* 查询天数
|
* @param startTime
|
* 注册时间
|
* @param endTime
|
* 注册时间
|
* @param orderMode
|
* 排序方式 订单数量 今日订单 累计队员
|
* @param out
|
*/
|
@RequestMapping(value = "query")
|
public void query(String callback, Integer pageIndex, Integer pageSize, String key, Integer keyType, Integer rank,
|
Integer days, String startTime, String endTime, Integer orderMode, Integer type, PrintWriter out) {
|
|
try {
|
if (type == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户类型type不能为空"));
|
return;
|
}
|
|
if (pageIndex == null)
|
pageIndex = 1;
|
|
if (pageSize == null)
|
pageSize = Constant.PAGE_SIZE;
|
|
Integer orderField = null;
|
if (orderMode != null) {
|
if (orderMode == 1 || orderMode == 2) {
|
orderField = orderMode;
|
orderMode = 1;
|
} else if (orderMode == 3 || orderMode == 4) {
|
orderField = orderMode;
|
orderMode = 2;
|
} else if (orderMode == 5 || orderMode == 6) {
|
orderField = orderMode;
|
orderMode = 3;
|
}
|
}
|
|
String userRank = null;
|
if (rank != null) {
|
switch (rank) {
|
case 1:
|
userRank = "青铜";
|
break;
|
case 2:
|
userRank = "白银";
|
break;
|
case 3:
|
userRank = "黄金";
|
break;
|
case 4:
|
userRank = "铂金";
|
break;
|
default:
|
break;
|
}
|
}
|
|
List<UserInfoVO> userList = userInfoService.query((pageIndex - 1) * pageSize, pageSize, type, key, keyType,
|
userRank, days, startTime, endTime, orderField, orderMode);
|
|
if (userList == null || userList.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
|
return;
|
}
|
|
long count = userInfoService.queryCount(type, key, keyType, userRank, days, startTime, endTime);
|
|
int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
|
PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
|
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
gsonBuilder.serializeNulls();
|
Gson gson = gsonBuilder.create();
|
|
JSONObject data = new JSONObject();
|
data.put("pe", pe);
|
data.put("resultList", gson.toJson(userList));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
}
|
}
|
|
/**
|
* 统计今日用户总情况
|
*
|
* @param callback
|
* @param out
|
*/
|
@RequestMapping(value = "countInfo")
|
public void countInfo(String callback, PrintWriter out) {
|
try {
|
|
// 累计用户数量
|
long totalUser = userInfoCountService.countNewUser(null, null);
|
// 流失用户数量(180天未使用登录并且无任何资金流动的账号数量)
|
long loseUser = userInfoCountService.countLoseUser(180);
|
// 累计有购买用户数
|
long orderUser = userInfoCountService.countHasOrderUser();
|
|
// 总数-普通用户
|
long countNormal = 0;
|
// 总数-铜用户
|
long countCuprum = 0;
|
// 总数-银用户
|
long countSilver = 0;
|
// 总数-金用户
|
long countGold = 0;
|
|
List<UserRank> listRank = userRankService.getAllRank();
|
if (listRank != null && listRank.size() > 0) {
|
for (UserRank userRank : listRank) {
|
Long id = userRank.getId();
|
String name = userRank.getName();
|
if ("青铜".equals(name)) {
|
continue;
|
}
|
|
long count = userInfoExtraService.countByRankId(id);
|
if ("白银".equals(name)) {
|
countCuprum = count;
|
} else if ("黄金".equals(name)) {
|
countSilver = count;
|
} else if ("铂金".equals(name)) {
|
countGold = count;
|
}
|
}
|
}
|
|
// 普通用户计算
|
countNormal = totalUser - (countCuprum + countSilver + countGold);
|
|
JSONObject data = new JSONObject();
|
data.put("totalUser", totalUser);
|
data.put("loseUser", loseUser);
|
data.put("orderUser", orderUser);
|
data.put("countNormal", countNormal);
|
data.put("countCuprum", countCuprum);
|
data.put("countSilver", countSilver);
|
data.put("countGold", countGold);
|
|
/*
|
* // 统计所有总金额 BigDecimal countTotalMoney =
|
* userInfoCountService.countAllMoney(null);
|
*
|
* // 统计所有可提现金额 String minMoney =
|
* configService.get(Constant.EXTRACT_MIN_MONEY); if (minMoney ==
|
* null) { minMoney = "20"; } double min =
|
* Double.parseDouble(minMoney); BigDecimal countCanAssets =
|
* userInfoCountService.countAllMoney(min);
|
* data.put("countTotalMoney", countTotalMoney);
|
* data.put("countCanAssets", countCanAssets);
|
*/
|
|
// 今日新增用户数量
|
long todayUser = userInfoCountService.countNewUser(1, null);
|
// 本月新增用户数量
|
long monthUser = userInfoCountService.countNewUser(null, 1);
|
data.put("todayUser", todayUser);
|
data.put("monthUser", monthUser);
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
}
|
}
|
|
/**
|
*
|
* @param data
|
* @param uid
|
* 用户ID
|
* @param type
|
* 需要解绑的账户类型
|
*/
|
@RequestMapping("unBindUserInfo")
|
public void unBindUserInfo(String callback, Long uid, String typeArray, PrintWriter out) {
|
try {
|
if (typeArray == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("没有可更改的内容"));
|
return;
|
}
|
|
Gson gson = new Gson();
|
List<Integer> list = gson.fromJson(typeArray, new TypeToken<ArrayList<Integer>>() {
|
}.getType());
|
if (list == null || list.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("没有可更改的内容"));
|
return;
|
}
|
|
if (uid == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户id不能为空"));
|
return;
|
}
|
|
UserInfo find = userInfoService.getUserById(uid);
|
if (find == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该用户!"));
|
return;
|
}
|
|
for (Integer type : list) {
|
String openid = find.getOpenid();
|
String wxUnionId = find.getWxUnionId();
|
String phone = find.getPhone();
|
if (1 == type) {
|
if (StringUtil.isNullOrEmpty(openid)) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定淘宝!"));
|
return;
|
} else {
|
userInfoService.deleteBindInfo(find, type);
|
}
|
} else if (2 == type) {
|
if (StringUtil.isNullOrEmpty(wxUnionId)) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定微信!"));
|
return;
|
} else {
|
userInfoService.deleteBindInfo(find, type);
|
}
|
} else if (3 == type) {
|
if (StringUtil.isNullOrEmpty(phone)) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定手机号!"));
|
return;
|
} else {
|
userInfoService.deleteBindInfo(find, type);
|
}
|
} else if (4 == type) {
|
// 查询支付宝绑定
|
BindingAccount account = bindingAccountService.getBindingAccountByUidAndType(uid,
|
BindingAccount.TYPE_ALIPAY);
|
if (account == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定支付宝!"));
|
return;
|
} else {
|
bindingAccountService.deleteBindingAccount(account);
|
}
|
} else {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("账户类型不匹配!"));
|
return;
|
}
|
}
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("解绑成功"));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
}
|
}
|
|
/**
|
* 封禁用户ID
|
*
|
* @param callback
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "forbiddenUser")
|
public void forbiddenUser(String callback, Long uid, HttpServletRequest request, PrintWriter out) {
|
try {
|
|
if (uid == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
|
return;
|
}
|
|
UserInfo currentInfo = userInfoService.selectByPKey(uid);
|
if (currentInfo == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户已不存在"));
|
return;
|
}
|
|
AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
|
if (admin == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("登录失效,请登录"));
|
return;
|
}
|
|
String reason = "后台封禁,操作人:" + admin.getId() + "-" + admin.getName();
|
userAccountService.forbiddenUserAll(uid, reason);
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("用户封禁成功"));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
|
}
|
}
|
|
/**
|
* 解除封禁用户ID
|
*
|
* @param callback
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "relieveForbiddenUser")
|
public void relieveForbiddenUser(String callback, Long uid, PrintWriter out) {
|
try {
|
|
if (uid == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
|
return;
|
}
|
|
UserInfo currentInfo = userInfoService.selectByPKey(uid);
|
if (currentInfo == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户已不存在"));
|
return;
|
}
|
|
currentInfo.setState(UserInfo.STATE_NORMAL);
|
currentInfo.setStateDesc("管理员已解封");
|
userInfoService.updateByPrimaryKeySelective(currentInfo);
|
|
// 解封微信
|
ForbiddenUserIdentifyCode forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
|
.listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId, currentInfo.getWxUnionId());
|
if (forbiddenUserIdentifyCode != null)
|
forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
|
|
// 解封手机
|
forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
|
.listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, currentInfo.getPhone());
|
if (forbiddenUserIdentifyCode != null)
|
forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
|
|
// 解封淘宝
|
UserExtraTaoBaoInfo taoBao = userExtraTaoBaoInfoService.getByUid(uid);
|
if (taoBao != null && !StringUtil.isNullOrEmpty(taoBao.getTaoBaoUid())) {
|
forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
|
.listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, taoBao.getTaoBaoUid());
|
if (forbiddenUserIdentifyCode != null)
|
forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
|
}
|
|
// 解封支付宝
|
List<BindingAccount> list = bindingAccountService.getBindingAccountByUid(uid);
|
if (list != null) {
|
for (BindingAccount ba : list) {
|
forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
|
ForbiddenUserIdentifyCodeTypeEnum.alipayAccount, ba.getAccount());
|
if (forbiddenUserIdentifyCode != null)
|
forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
|
}
|
}
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("用户解封成功"));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
|
}
|
}
|
|
/**
|
* 用户账号- 封禁/解封
|
*
|
* @param callback
|
* @param code
|
* @param type
|
* 1("微信unionId"), 2("淘宝ID"), 3("手机号"), 4("支付宝账号");
|
* @param out
|
*/
|
@RequestMapping(value = "saveForbiddenInfo")
|
public void saveForbiddenInfo(String callback, String code, Integer type, PrintWriter out) {
|
try {
|
if (code == null || code.trim().length() == 0 || type == null || "NULL".equalsIgnoreCase(code)) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不能为空"));
|
return;
|
}
|
|
forbiddenUserIdentifyCodeService.saveForbiddenInfo(code, type);
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
|
|
} catch (ForbiddenUserIdentifyCodeException e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
}
|
}
|
|
/**
|
* 删除队员关系
|
*
|
* @param callback
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "deleteThreeSale")
|
public void deleteThreeSale(String callback, Long id, PrintWriter out) {
|
try {
|
|
if (id == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
|
return;
|
}
|
|
int count = threeSaleService.deleteByPrimaryKey(id);
|
|
if (count > 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
|
} else {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
}
|
}
|
|
@RequestMapping(value = "queryMyFirstTeams")
|
public void queryMyFirstTeams(String callback, Integer pageIndex, Integer pageSize, String key, Long bossId,
|
PrintWriter out) {
|
try {
|
|
if (bossId == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
|
return;
|
}
|
|
if (pageIndex == null)
|
pageIndex = 1;
|
|
if (pageSize == null)
|
pageSize = Constant.PAGE_SIZE;
|
|
List<ThreeSale> firstTeamList = threeSaleService.queryMyFirstTeamList((pageIndex - 1) * pageSize, pageSize,
|
key, bossId);
|
if (firstTeamList == null || firstTeamList.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无一度队员"));
|
return;
|
}
|
|
/* 获取邀请用户头像 、昵称 */
|
for (ThreeSale threeSale : firstTeamList) {
|
UserInfo worker = threeSale.getWorker();
|
if (worker == null) {
|
worker = new UserInfo();
|
threeSale.setWorker(worker);
|
} else {
|
Long id = worker.getId();
|
|
UserInfo currentInfo = userInfoService.selectByPKey(id);
|
if (currentInfo != null) {
|
worker.setNickName(currentInfo.getNickName());
|
worker.setPortrait(currentInfo.getPortrait());
|
}
|
}
|
}
|
|
long count = threeSaleService.queryCountMyFirstTeamList(key, bossId);
|
|
int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
|
PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
|
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
gsonBuilder.serializeNulls();
|
Gson gson = gsonBuilder.create();
|
|
JSONObject data = new JSONObject();
|
data.put("pe", pe);
|
data.put("list", gson.toJson(firstTeamList));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
}
|
}
|
|
@RequestMapping(value = "queryMySecondTeams")
|
public void queryMySecondTeams(String callback, Integer pageIndex, Integer pageSize, String key, Long bossId,
|
PrintWriter out) {
|
try {
|
|
if (bossId == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
|
return;
|
}
|
|
if (pageIndex == null)
|
pageIndex = 1;
|
|
if (pageSize == null)
|
pageSize = Constant.PAGE_SIZE;
|
|
List<ThreeSale> firstTeamList = threeSaleService.queryMySecondTeamList((pageIndex - 1) * pageSize, pageSize,
|
key, bossId);
|
if (firstTeamList == null || firstTeamList.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无二度队员"));
|
return;
|
}
|
|
/* 获取邀请用户头像 、昵称 */
|
for (ThreeSale threeSale : firstTeamList) {
|
UserInfo worker = threeSale.getWorker();
|
if (worker == null) {
|
worker = new UserInfo();
|
threeSale.setWorker(worker);
|
} else {
|
Long id = worker.getId();
|
|
UserInfo currentInfo = userInfoService.selectByPKey(id);
|
if (currentInfo != null) {
|
worker.setNickName(currentInfo.getNickName());
|
worker.setPortrait(currentInfo.getPortrait());
|
}
|
}
|
}
|
|
long count = threeSaleService.queryCountMySecondTeamList(key, bossId);
|
|
int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
|
PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
|
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
gsonBuilder.serializeNulls();
|
Gson gson = gsonBuilder.create();
|
|
JSONObject data = new JSONObject();
|
data.put("pe", pe);
|
data.put("list", gson.toJson(firstTeamList));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
}
|
}
|
|
/**
|
* 队员关系
|
*
|
* @param pageIndex
|
* @param key
|
* @param state
|
* @param startTime
|
* @param endTime
|
* @param out
|
*/
|
@RequestMapping(value = "getRelationList")
|
public void getRelationList(String callback, Integer pageIndex, Integer pageSize, Long uid, Integer type,
|
Integer state, String startTime, String endTime, PrintWriter out) {
|
|
if (pageIndex == null || pageIndex < 1) {
|
pageIndex = 1;
|
}
|
|
if (pageSize == null || pageSize < 1) {
|
pageSize = Constant.PAGE_SIZE;
|
}
|
|
try {
|
|
if (!StringUtil.isNullOrEmpty(endTime)) {
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
Date enddate = sdf.parse(endTime);
|
Calendar c = Calendar.getInstance();
|
c.setTime(enddate);
|
c.add(Calendar.DAY_OF_MONTH, 1);// 今天+1天
|
endTime = sdf.format(c.getTime());
|
}
|
|
List<ThreeSale> listQuery = null;
|
if (type == 0) {
|
// 上级用户
|
if (uid == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询上级需输入用户id"));
|
return;
|
}
|
listQuery = threeSaleService.listSuperiorQuery((pageIndex - 1) * pageSize, pageSize, state, uid);
|
} else if (type == 1) {
|
// 一级用户
|
listQuery = threeSaleService.listFirstTeamQuery((pageIndex - 1) * pageSize, pageSize, uid, state,
|
startTime, endTime);
|
} else if (type == 2) {
|
// 二级用户
|
listQuery = threeSaleService.listSecondTeamQuery((pageIndex - 1) * pageSize, pageSize, uid, state,
|
startTime, endTime);
|
}
|
|
if (listQuery == null || listQuery.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
|
return;
|
}
|
|
for (ThreeSale threeSale : listQuery) {
|
Integer expire = threeSale.getExpire();
|
if (threeSale.getState()) {
|
threeSale.setExpire(1); // 邀请成功
|
} else {
|
if (expire != null && expire == 1) {
|
threeSale.setExpire(2); // 邀请失效
|
} else {
|
threeSale.setExpire(0);// 已邀请
|
}
|
}
|
}
|
|
long count = 0;
|
if (type == 0) {
|
// 上级用户
|
count = threeSaleService.countSuperiorQuery(state, uid);
|
} else if (type == 1) {
|
// 一级用户
|
count = threeSaleService.countFirstTeamQuery(uid, state, startTime, endTime);
|
} else if (type == 2) {
|
// 二级用户
|
count = threeSaleService.countSecondTeamQuery(uid, state, startTime, endTime);
|
}
|
|
int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
|
PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
|
|
JSONObject data = new JSONObject();
|
data.put("pe", pe);
|
data.put("result_list", listQuery);
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 用户账户明细
|
*
|
* @param callback
|
* @param pageIndex
|
* @param pageSize
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "getAccountDetails")
|
public void getAccountDetails(String callback, Integer pageIndex, Integer pageSize, Long uid, PrintWriter out) {
|
if (pageIndex == null || pageIndex < 1) {
|
pageIndex = 1;
|
}
|
|
if (pageSize == null || pageSize < 1) {
|
pageSize = Constant.PAGE_SIZE;
|
}
|
|
if (uid == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
|
return;
|
}
|
|
try {
|
List<UserMoneyDetail> userMoneyDetailsList = userMoneyDetailService.listByUidWithState(uid, pageIndex,
|
pageSize);
|
if (userMoneyDetailsList == null || userMoneyDetailsList.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
|
return;
|
}
|
|
long count = userMoneyDetailService.countByUidWithState(uid);
|
|
int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
|
PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
|
|
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
|
JSONObject data = new JSONObject();
|
data.put("pe", pe);
|
data.put("result_list", gson.toJson(userMoneyDetailsList));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
|
}
|
}
|
|
/**
|
* 根据渠道 统计当日新增用户数量
|
*
|
* @param channelArray
|
* 名字数组
|
* @param dateType
|
* 类型 1日 2月 3年
|
* @param year
|
* 2018
|
* @param startTime
|
* 2018-12-01
|
* @param endTime
|
* 2018-12-01
|
* @param out
|
*/
|
@RequestMapping(value = "getNewUserCharts")
|
public void getNewUserCharts(String callback, String channelArray, Integer dateType, String year, String startTime,
|
String endTime, PrintWriter out) {
|
|
String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
|
if (validateMsg != null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
|
return;
|
}
|
|
if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
|
startTime = null;
|
endTime = null;
|
}
|
|
List<String> channelList = null;
|
if (channelArray != null && channelArray.trim().length() > 0) {
|
Gson gson = new Gson();
|
channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {
|
}.getType());
|
}
|
|
if (channelList == null || channelList.size() == 0) {
|
channelList = new ArrayList<String>();
|
channelList.add("all");
|
}
|
|
if (dateType == 1 && year != null) {
|
year = null; // 设置为空
|
} else if (dateType == 2) {
|
if (startTime != null)
|
startTime = null;
|
|
if (endTime != null)
|
endTime = null;
|
|
} else if (dateType == 3) {
|
if (year != null)
|
year = null;
|
|
if (startTime != null)
|
startTime = null;
|
|
if (endTime != null)
|
endTime = null;
|
}
|
|
try {
|
|
Gson gson = new Gson();
|
Object objectDate = null;
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
|
JSONArray line_list = new JSONArray();
|
for (String channel : channelList) {
|
|
List<Map<String, Object>> list = userInfoCountService.countNewUserByDate(channel, dateType, year,
|
startTime, endTime);
|
|
if ("all".equalsIgnoreCase(channel)) {
|
channel = "总计";
|
}
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", channel);
|
|
if (dateType != 3) {
|
innerList.put("data", gson.toJson(AdminUtils.dayOrMonthDataFactory(dateType, dateList, list)));
|
} else {
|
// 年视图
|
Map<String, Object> map = AdminUtils.yearsDataFactory(list);
|
|
if (objectDate == null) {
|
objectDate = map.get("date");
|
}
|
innerList.put("data", gson.toJson(map.get("value")));
|
}
|
|
line_list.add(innerList);
|
}
|
|
JSONObject data = new JSONObject();
|
if (objectDate != null) {
|
data.put("xAxis_list", gson.toJson(objectDate));
|
} else {
|
data.put("xAxis_list", gson.toJson(dateList));
|
}
|
|
data.put("line_list", line_list);
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 根据渠道 统计当日新增用户数量
|
*
|
* @param channelArray
|
* 名字数组
|
* @param dateType
|
* 类型 1日 2月 3年
|
* @param year
|
* 2018
|
* @param startTime
|
* 2018-12-01
|
* @param endTime
|
* 2018-12-01
|
* @param out
|
*/
|
@RequestMapping(value = "getTodayBuyRate")
|
public void getTodayBuyRate(String callback, String channelArray, Integer dateType, String year, String startTime,
|
String endTime, Integer orderNum, PrintWriter out) {
|
|
String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
|
if (validateMsg != null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
|
return;
|
}
|
|
if (dateType == 2 && StringUtil.isNullOrEmpty(year)) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请输入年份"));
|
return;
|
}
|
|
if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
|
startTime = null;
|
endTime = null;
|
}
|
|
List<String> channelList = null;
|
if (channelArray != null && channelArray.trim().length() > 0) {
|
Gson gson = new Gson();
|
channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {
|
}.getType());
|
}
|
|
if (channelList == null || channelList.size() == 0) {
|
channelList = new ArrayList<String>();
|
channelList.add("all");
|
}
|
|
if (dateType == 1 && year != null) {
|
year = null; // 设置为空
|
} else if (dateType == 2) {
|
if (startTime != null)
|
startTime = null;
|
|
if (endTime != null)
|
endTime = null;
|
|
} else if (dateType == 3) {
|
if (year != null)
|
year = null;
|
|
if (startTime != null)
|
startTime = null;
|
|
if (endTime != null)
|
endTime = null;
|
}
|
|
try {
|
|
Gson gson = new Gson();
|
Object objectDate = null;
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
|
JSONArray line_list = new JSONArray();
|
for (String channel : channelList) {
|
|
List<Map<String, Object>> list = userInfoCountService.getTodayBuyRate(channel, dateType, year,
|
startTime, endTime);
|
|
if ("all".equalsIgnoreCase(channel)) {
|
channel = "总计";
|
}
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", channel);
|
|
if (dateType != 3) {
|
innerList.put("data", gson.toJson(AdminUtils.dayOrMonthDataFactory(dateType, dateList, list)));
|
} else {
|
// 年视图
|
Map<String, Object> map = AdminUtils.yearsDataFactory(list);
|
|
if (objectDate == null) {
|
objectDate = map.get("date");
|
}
|
innerList.put("data", gson.toJson(map.get("value")));
|
}
|
|
line_list.add(innerList);
|
}
|
|
JSONObject data = new JSONObject();
|
if (objectDate != null) {
|
data.put("xAxis_list", gson.toJson(objectDate));
|
} else {
|
data.put("xAxis_list", gson.toJson(dateList));
|
}
|
|
data.put("line_list", line_list);
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
e.printStackTrace();
|
}
|
|
}
|
|
/**
|
* 当周产生3单的新增用户概率
|
*
|
* @param callback
|
* @param channelArray
|
* 渠道名称
|
* @param startTime
|
* @param endTime
|
* @param orderNum
|
* 订单数量
|
* @param out
|
*/
|
@RequestMapping(value = "getWeekBuyRate")
|
public void getWeekBuyRate(String callback, String channelArray, String startTime, String endTime, Integer orderNum,
|
PrintWriter out) {
|
|
if (StringUtil.isNullOrEmpty(startTime) || StringUtil.isNullOrEmpty(endTime)) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当周订单统计对应时间区域不能为空"));
|
return;
|
}
|
|
List<String> channelList = null;
|
if (channelArray != null && channelArray.trim().length() > 0) {
|
Gson gson = new Gson();
|
channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {
|
}.getType());
|
}
|
|
if (channelList == null || channelList.size() == 0) {
|
channelList = new ArrayList<String>();
|
channelList.add("all");
|
}
|
|
if (orderNum < 1) {
|
orderNum = 1;
|
}
|
|
try {
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(1, startTime, endTime, null);
|
|
JSONArray line_list = new JSONArray();
|
for (String channel : channelList) {
|
|
List<Object> list = userInfoCountService.getWeekBuyRate(channel, startTime, endTime, orderNum,
|
dateList);
|
|
if ("all".equalsIgnoreCase(channel)) {
|
channel = "总计";
|
}
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", channel);
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("xAxis_list", gson.toJson(dateList));
|
data.put("line_list", line_list);
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
|
e.printStackTrace();
|
}
|
}
|
|
}
|