package com.xzx.gc.user.service;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.json.JSONUtil;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.xzx.gc.common.constant.CommonEnum;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.common.constant.OrderEnum;
|
import com.xzx.gc.common.constant.RedisKeyConstant;
|
import com.xzx.gc.common.exception.RestException;
|
import com.xzx.gc.common.utils.*;
|
import com.xzx.gc.entity.*;
|
import com.xzx.gc.model.admin.CollectorModel;
|
import com.xzx.gc.model.admin.PromoterModel;
|
import com.xzx.gc.model.admin.UserModel;
|
import com.xzx.gc.model.user.*;
|
import com.xzx.gc.user.dto.AddressDto;
|
import com.xzx.gc.user.dto.RayaltyDto;
|
import com.xzx.gc.user.mapper.*;
|
import com.xzx.gc.user.vo.CategaryVo;
|
import com.xzx.gc.util.DoubleUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
import tk.mybatis.mapper.common.example.SelectByExampleMapper;
|
import tk.mybatis.mapper.entity.Example;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.UnsupportedEncodingException;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Transactional
|
@Slf4j
|
public class UserService {
|
@Autowired
|
private UserMapper userMapper;
|
|
@Autowired
|
private UserLoginInfoMapper userLoginInfoMapper;
|
|
|
@Autowired
|
private HttpServletRequest request;
|
|
@Autowired
|
private UserTargetInfoMapper userTargetInfoMapper;
|
|
@Autowired
|
private RedisUtil redisUtil;
|
|
@Autowired
|
private OrderMapper orderMapper;
|
|
@Autowired
|
private OtherUserService otherUserService;
|
|
@Autowired
|
private BusinessUtil businessUtil;
|
|
@Autowired
|
private WeightItemPriceService weightItemPriceService;
|
|
@Autowired
|
private AccountService accountService;
|
|
@Autowired
|
private PartnerGaodeService partnerGaodeService;
|
|
@Autowired
|
private CityPartnerService cityPartnerService;
|
|
@Autowired
|
private OtherUserMapper otherUserMapper;
|
|
@Autowired
|
private AddressMapper addressMapper;
|
|
@Autowired
|
private PayInfoMapper payInfoMapper;
|
|
@Autowired
|
private OrderStorageInfoMapper orderStorageInfoMapper;
|
|
@Autowired
|
private SysStorageMapper sysStorageMapper;
|
|
@Autowired
|
private OrderService orderService;
|
|
public List<UserInfo> findForBidden() {
|
UserInfo userInfo = new UserInfo();
|
userInfo.setDelFlag(Constants.DEL_NOT_FLAG);
|
List<UserInfo> userInfo1 = userMapper.select(userInfo);
|
return userInfo1;
|
}
|
|
|
public List<AccountVo> queryMyMoney(AccountReq accountReq) {
|
Map map = new HashMap();
|
map.put("userId", accountReq.getUserId());
|
List<AccountVo> list = userMapper.queryMyMoneyWithStatus(map);
|
|
if (!CollectionUtils.isEmpty(list)) {
|
//获取回收订单完成次数
|
map.put("receiver", accountReq.getUserId());
|
map.put("orderType", OrderEnum.回收.getValue());
|
map.put("orderStatus", OrderEnum.完成.getValue());
|
String recycleCount = orderMapper.orderCountStat(map);
|
//回收员完成订单数
|
list.get(0).setRecycleCompleteOrderCount(recycleCount);
|
|
//我的环保金和积分
|
String money = list.get(0).getMoney();
|
String collectScore = list.get(0).getCollectScore();
|
list.get(0).setMoney(businessUtil.changeMoney(money));
|
list.get(0).setCollectScore(businessUtil.changeMoney(collectScore));
|
|
|
//未结算的提成
|
if (businessUtil.isApp(request.getHeader("clientType"))) {
|
RayaltyDto byReceiver = weightItemPriceService.findByReceiver(accountReq.getUserId());
|
list.get(0).setNotPay(byReceiver.getNotPay());
|
}
|
|
|
list.stream().forEach(x -> {
|
if (StringUtils.isNotBlank(x.getPayPassword())) {
|
//存在支付密码
|
x.setPayPassword("true");
|
}
|
});
|
|
//格式化
|
list.get(0).setOverdraftLimit(businessUtil.changeMoney(list.get(0).getOverdraftLimit()));
|
list.get(0).setFreezeMoney(businessUtil.changeMoney(list.get(0).getFreezeMoney()));
|
list.get(0).setWithdrawMoney(businessUtil.changeMoney(list.get(0).getWithdrawMoney()));
|
|
}
|
|
return list;
|
}
|
|
|
public List<UserInfoVo> queryUserInfo(UserReq userReq) {
|
List<UserInfoVo> list = userMapper.queryUserInfo(userReq);
|
return list;
|
}
|
|
public UserInfoVo queryUserInfoByUserId(String userId) {
|
UserInfoVo userInfoVo = userMapper.queryUserInfoByUserId(userId);
|
if (userInfoVo != null) {
|
userInfoVo.setNickName(com.xzx.gc.common.utils.StringUtils.decode(userInfoVo.getNickName()));
|
userInfoVo.setAvatarUrl(userInfoVo.getAvatar());
|
}
|
return userInfoVo;
|
}
|
|
|
public String VerifyPayPassword(AccountReq accountReq) {
|
String userId = accountReq.getUserId();
|
AccountReq req = new AccountReq();
|
req.setUserId(userId);
|
// 查询是否被锁定
|
List<AccountVo> list = userMapper.queryIsLock(userId);
|
AccountVo vo = list.get(0);
|
//错误次数
|
int errorTimes = vo.getErrorTimes() == null ? 0 : vo.getErrorTimes();
|
//锁定时间
|
String lockTime = vo.getLockTime();
|
|
if (errorTimes >= Constants.PAY_ERROR_NUM) {
|
//判断当前时间超出锁定时间1天。 错误次数重置为0.
|
long l = DateUtil.betweenDay(DateUtil.parse(lockTime, DateUtils.DATE_FORMAT_YMDHMS), new Date(), false);
|
if (l >= 1) {
|
errorTimes = 0;
|
}
|
}
|
|
if (errorTimes >= Constants.PAY_ERROR_NUM) {
|
return "isLock";
|
}
|
|
List<AccountVo> accountList = userMapper.queryAccountInfo(accountReq);
|
if (CollUtil.isNotEmpty(accountList)) {
|
req.setErrorTimes(0);
|
req.setLockTime("");
|
req.setLastErrorTime("");
|
userMapper.setLock(req);
|
return "success";
|
} else {
|
errorTimes++;
|
req.setErrorTimes(errorTimes);
|
req.setLastErrorTime(DateUtil.now());
|
if (errorTimes >= Constants.PAY_ERROR_NUM) {
|
req.setLockTime(DateUtil.now());
|
}
|
userMapper.setLock(req);
|
if (errorTimes >= Constants.PAY_ERROR_NUM) {
|
return "isLock";
|
} else {
|
return errorTimes + "";
|
}
|
}
|
|
}
|
|
|
public int AddPayPassword(AccountReq accountReq) {
|
int returnvalue = 0;
|
try {
|
returnvalue = userMapper.modifyPayPassword(accountReq);
|
} catch (Exception e) {
|
ExceptionUtils.err("支付密码新增失败", e);
|
}
|
return returnvalue;
|
}
|
|
|
public void updateAddr(AddressDto addressDto) {
|
UserInfo userInf = new UserInfo();
|
userInf.setUserId(addressDto.getUserId());
|
userInf.setLatitude(addressDto.getLatitude());
|
userInf.setLongitude(addressDto.getLongitude());
|
|
//根据经纬度查询围栏及合伙人
|
UserInfo byId = findById(userInf.getUserId());
|
if (StrUtil.isBlank(byId.getPartnerId())) {
|
String partnerIdByLon = partnerGaodeService.findPartnerIdByLon(addressDto.getLongitude(), addressDto.getLatitude());
|
userInf.setPartnerId(partnerIdByLon);
|
}
|
userMapper.updateByPrimaryKeySelective(userInf);
|
}
|
|
|
public int ModifyPayPassword(AccountReq accountReq) {
|
int returnvalue = 0;
|
String mobilePhone = accountReq.getMobilePhone();
|
if (SpringUtil.isProdOrCloud()) {
|
String redisVerifyCode = "";
|
redisVerifyCode = redisUtil.get(Constants.REDIS_USER_KEY + "code:" + mobilePhone);
|
|
|
if (redisVerifyCode == null || "".equals(redisVerifyCode)) {
|
//验证码失效
|
returnvalue = -1;
|
return returnvalue;
|
} else if (!redisVerifyCode.equals(accountReq.getVerifyCode())) {
|
//验证码错误
|
returnvalue = -2;
|
return returnvalue;
|
}
|
}
|
|
//判断手机是否是自己
|
AccountInfo select = accountService.findByUserIdForbidden(accountReq.getUserId());
|
if (select == null || !select.getAccountName().equals(mobilePhone)) {
|
return -3;
|
}
|
|
|
returnvalue = userMapper.modifyPayPassword(accountReq);
|
return returnvalue;
|
}
|
|
|
public UserInfo findByMobile(String mobilePhone) {
|
UserInfo userInfo = new UserInfo();
|
userInfo.setMobilePhone(mobilePhone);
|
userInfo.setDelFlag(Constants.DEL_NOT_FLAG);
|
userInfo.setIsProhibit(false);
|
UserInfo userInfo1 = userMapper.selectOne(userInfo);
|
return userInfo1;
|
}
|
|
|
public UserInfo findByMobileForbidden(String mobilePhone) {
|
UserInfo userInfo = new UserInfo();
|
userInfo.setMobilePhone(mobilePhone);
|
userInfo.setDelFlag(Constants.DEL_NOT_FLAG);
|
UserInfo userInfo1 = userMapper.selectOne(userInfo);
|
return userInfo1;
|
}
|
|
|
public UserInfo findByOpenId(String openId) {
|
UserInfo userInfo = new UserInfo();
|
userInfo.setOpenId(openId);
|
userInfo.setDelFlag(Constants.DEL_NOT_FLAG);
|
userInfo.setIsProhibit(false);
|
UserInfo userInfo1 = userMapper.selectOne(userInfo);
|
return userInfo1;
|
}
|
|
/**
|
* 更新用户缓存信息
|
*
|
* @param byMobileForbidden
|
*/
|
public void setRedisUserInfo(UserInfo byMobileForbidden) {
|
if (redisUtil.exists(RedisKeyConstant.TOKEN + byMobileForbidden.getUserId())) {
|
String hget = redisUtil.hget(RedisKeyConstant.USER_INFO, byMobileForbidden.getOpenId());
|
if (StrUtil.isNotBlank(hget)) {
|
UserInfoVo vo = JSONUtil.toBean(hget, UserInfoVo.class);
|
UserInfoVo userInfoVo = queryUserInfoByUserId(byMobileForbidden.getUserId());
|
userInfoVo.setToken(vo.getToken());
|
redisUtil.hset(RedisKeyConstant.USER_INFO, byMobileForbidden.getOpenId(), JSONUtil.toJsonStr(userInfoVo));
|
}
|
}
|
}
|
|
|
public UserInfo findById(String id) {
|
return userMapper.selectByPrimaryKey(id);
|
}
|
|
public List<UserInfo> findByDistance() {
|
return userMapper.findByDistance();
|
}
|
|
|
public List<UserInfo> find() {
|
UserInfo userInfo = new UserInfo();
|
userInfo.setDelFlag(0);
|
userInfo.setIsProhibit(false);
|
List<UserInfo> userInfo1 = userMapper.select(userInfo);
|
return userInfo1;
|
}
|
|
|
public void updateById(UserInfo userInfo) {
|
userMapper.updateByPrimaryKeySelective(userInfo);
|
}
|
|
public PageInfo<UserDTO> findOtherAll(int pageNo, int pageSize, String keyword) {
|
PageHelper.startPage(pageNo, pageSize);
|
List<UserDTO> list = userMapper.findOtherAll(keyword);
|
return new PageInfo<>(list);
|
|
}
|
|
/**
|
* 查询手机号码
|
*
|
* @param userId
|
* @param type 类型 0普通用户 1平台用户
|
* @return
|
*/
|
public String findOtherByUserId(String userId, int type) {
|
if (businessUtil.isApp(request.getHeader("clientType"))) {
|
OtherUserInfo byId = otherUserService.findById(userId);
|
if (byId != null) return byId.getMobilePhone();
|
} else {
|
UserInfo byId = userMapper.selectByPrimaryKey(userId);
|
if (byId != null) return byId.getMobilePhone();
|
}
|
return "未知";
|
}
|
|
|
public Map<String, Object> queryCuserForTimeList(UserModel userModel) {
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
String partnerId = "";
|
if (null != partnerIds && partnerIds.size() > 0) {
|
partnerId = partnerIds.get(0);
|
} else {
|
partnerId = userModel.getPartnerId();
|
}
|
String startTime = userModel.getStartTime();
|
String endTime = userModel.getEndTime();
|
String phone = userModel.getMobilePhone();
|
String isProhibit = userModel.getIsProhibit();
|
|
if (null != startTime && !"".equals(startTime)) {
|
startTime = startTime + " 00:00:00";
|
}
|
if (null != endTime && !"".equals(endTime)) {
|
endTime = endTime + " 23:59:59";
|
}
|
|
Map<String, Object> m = new HashMap<>();
|
PageHelper.startPage(userModel.getPage(), userModel.getLimit());
|
List<UserModel> map = userMapper.queryCuserForTimeList(phone, startTime, endTime, userModel.getUserType(), isProhibit, partnerId);
|
PageInfo<UserModel> pageInfo = new PageInfo<>(map);
|
List<String> orderStatus1 = new ArrayList<>();
|
List<String> orderStatus2 = new ArrayList<>();
|
orderStatus1.add("3");
|
orderStatus2.add("4");
|
orderStatus2.add("5");
|
|
orderStatus2.add("7");
|
for (UserModel mx : map) {
|
|
//推广人数(暂时没有推广关系为空),订单数,环保金,积分
|
if (userModel.getExportFlag() == 0) {
|
//订单数
|
Integer orderNum = 0;
|
// Example exampleOrder = new Example(OrderInfo.class);
|
// Example.Criteria criteriaOrder = exampleOrder.createCriteria();
|
// criteriaOrder.andEqualTo("userId",mx.getUserId());
|
// criteriaOrder.andNotEqualTo("orderStatus",6);
|
List<OrderInfo> orderInfos = orderMapper.selectOrderByUserId(mx.getUserId(),6);
|
if(CollUtil.isNotEmpty(orderInfos)){
|
orderNum = orderNum + orderInfos.size();
|
}
|
|
List<JhyOrder> jhyOrders = orderMapper.selectJhyOrderByUserId(mx.getUserId());
|
if(CollUtil.isNotEmpty(jhyOrders)){
|
orderNum = orderNum + jhyOrders.size();
|
}
|
mx.setAllOrderNum(orderNum);
|
//环保金,积分
|
AccountInfo accountInfo = accountService.findByUserId(mx.getUserId());
|
if(ObjectUtil.isNotEmpty(accountInfo)){
|
String money = accountInfo.getMoney();
|
mx.setMoney(new BigDecimal(StrUtil.isEmpty(money) ? "0" : money).setScale( 2, BigDecimal.ROUND_DOWN ));
|
|
String collectScore = StrUtil.isEmpty(accountInfo.getCollectScore()) ? "0":accountInfo.getCollectScore();
|
mx.setCollectScore(new BigDecimal(collectScore).setScale( 2, BigDecimal.ROUND_DOWN ));
|
}
|
|
}
|
|
//设置登录时间
|
if (userModel.getExportFlag() == 0) {
|
Example example = new Example(UserLoginInfo.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("userId", mx.getUserId());
|
example.setOrderByClause("login_time desc");
|
List<UserLoginInfo> userLoginInfos = userLoginInfoMapper.selectByExample(example);
|
if (CollUtil.isNotEmpty(userLoginInfos)) {
|
mx.setLoginTime(CollUtil.getFirst(userLoginInfos).getLoginTime());
|
}
|
}
|
|
if (!StringUtils.isEmpty(mx.getNickName())) {
|
mx.setNickName(com.xzx.gc.common.utils.StringUtils.decode(mx.getNickName()));
|
}
|
// 待完成订单总数
|
Map<String, Object> osMap = orderMapper.queryCuserOrderByUserIdCount1(mx.getUserId());
|
mx.setOrderStatus3(Integer.parseInt(osMap.get("count1").toString()));
|
mx.setOrderStatus5(Integer.parseInt(osMap.get("count").toString()));
|
|
//查询用户首次下单时间和最近下单时间
|
List<OrderInfo> byCreateUserId = orderService.findByCreateUserId(mx.getUserId(), null);
|
if(CollUtil.isNotEmpty(byCreateUserId)) {
|
mx.setOrderRecentTime(CollUtil.getFirst(byCreateUserId).getCreateTime());
|
mx.setOrderFirstTime(CollUtil.getLast(byCreateUserId).getCreateTime());
|
}
|
|
if (userModel.getExportFlag() == 0) {
|
String yqName = userTargetInfoMapper.queryTgNameByRealUserId(mx.getMobilePhone());
|
String tgName = userTargetInfoMapper.queryTgNameByUserId(mx.getMobilePhone());
|
mx.setTgName(StrUtil.isBlank(tgName) ? "无" : tgName);
|
mx.setYqName(StrUtil.isBlank(yqName) ? "无" : yqName);
|
String upid = mx.getPartnerId();
|
StringBuffer partnerName = new StringBuffer();
|
if (null != upid && !"".equals(upid)) {
|
String[] pIds = upid.split(",");
|
for (String pid : pIds) {
|
CityPartner cityPartner = cityPartnerService.findById(Convert.toInt(pid));
|
partnerName.append(cityPartner.getPartnerName()).append(",");
|
}
|
String ax = partnerName.toString();
|
if (null != ax && !"".equals(ax)) {
|
ax = ax.substring(0, ax.length() - 1);
|
mx.setPartnerName(ax);
|
|
} else {
|
mx.setPartnerName("-");
|
}
|
} else {
|
mx.setPartnerName("-");
|
}
|
}
|
}
|
m.put("count", pageInfo.getTotal());
|
m.put("data", map);
|
m.put("code", 0);
|
|
//不是导出的情况
|
if (userModel.getExportFlag() == 0) {
|
// 总用户量
|
int allNomUser = userMapper.queryCuserForTimeListCount(null, null, null, null, partnerId);
|
// 今日新增用户
|
String dbTime = DateUtil.today();
|
String[] dt = dbTime.split(" ");
|
String stTime = dt[0] + " 00:00:00";
|
String edTime = dt[0] + " 23:59:59";
|
int todayNewUser = userMapper.queryCuserForTimeListCount(null, stTime, edTime, null, partnerId);
|
//日活跃用户
|
//查询日活
|
int userVisit = 0;
|
Map<String, Object> dayCountMap = userLoginInfoMapper.queryUserDayCount(userModel.getTownIds());
|
if (null != dayCountMap && null != dayCountMap.get("userDayCount")) {
|
userVisit = Integer.parseInt(dayCountMap.get("userDayCount").toString());
|
}
|
m.put("allNomUser", allNomUser);
|
m.put("todayNewUser", todayNewUser);
|
m.put("userVisit", userVisit);
|
}
|
return m;
|
}
|
|
|
public void UpdateUserApiByUserId(String isProhibit, String userId, String userType) {
|
UserInfo userModel = findById(userId);
|
boolean bool = false;
|
if (isProhibit.equals("1")) {
|
bool = true;
|
if (userModel == null) {
|
if (userType.equals("6")) {
|
userTargetInfoMapper.UpdateUserApiByTargetUserId(bool, userId);
|
}
|
otherUserMapper.UpdateUserApiByOtherUserId(bool, userId, userType);
|
} else {
|
if (userType.equals("6")) {
|
userTargetInfoMapper.UpdateUserApiByTargetUserId(bool, userId);
|
}
|
userMapper.UpdateUserApiByUserId(bool, userId);
|
}
|
|
} else {
|
if (userModel == null) {
|
if (userType.equals("6")) {
|
userTargetInfoMapper.UpdateUserApiByTargetUserId(bool, userId);
|
}
|
otherUserMapper.UpdateUserApiByOtherUserId(bool, userId, userType);
|
} else {
|
if (userType.equals("6")) {
|
userTargetInfoMapper.UpdateUserApiByTargetUserId(bool, userId);
|
}
|
userMapper.UpdateUserApiByUserId(bool, userId);
|
|
}
|
}
|
}
|
|
/**
|
* C端用户管理---用户查询----详情
|
*
|
* @param userId
|
* @param phone
|
* @param userType
|
* @return
|
*/
|
public Map<String, Object> queryCuserDetail(String userId, String phone, String userType, int limit, int page) {
|
int p = page;
|
p = (p - 1) * limit;
|
Map<String, Object> m = new HashMap<>();
|
// 查询用户信息
|
m.put("user", userMapper.queryCuserDetail(phone, userType));
|
// 查询用户地址
|
m.put("address", addressMapper.queryCuserAddress(phone, userId));
|
|
m.put("userOrderList", orderMapper.queryUserOrderList(userId));
|
// 查询统计用户的订单, 这里面问题,如是普通用户对应为create_userid, 如是回收员或代丢员对应为recice
|
Integer[] x = new Integer[2];
|
x[0] = 4;
|
x[1] = 5;
|
List<Map<String, Object>> om = orderMapper.queryCuserOrderCount(userId, x);
|
m.put("orderNum", om);
|
return m;
|
}
|
|
/**
|
* 推广员列表
|
*/
|
public Map<String, Object> queryPromoterApiList(UserModel userModel) {
|
List<String> partnerIds = new ArrayList<>();
|
if (null != userModel.getPartnerId() && !"".equals(userModel.getPartnerId())) {
|
partnerIds.add(userModel.getPartnerId());
|
} else {
|
partnerIds = cityPartnerService.queryPartnerByCurrent();
|
}
|
|
String startTime = userModel.getStartTime();
|
String endTime = userModel.getEndTime();
|
if (null != startTime && !"".equals(startTime)) {
|
startTime = startTime + " 00:00:00";
|
}
|
if (null != endTime && !"".equals(endTime)) {
|
endTime = endTime + " 23:59:59";
|
}
|
String phone = userModel.getMobilePhone();
|
Map<String, Object> m = new HashMap<>();
|
|
List<UserModel> list = new ArrayList<>();
|
PageHelper.startPage(userModel.getPage(), userModel.getLimit());
|
list = otherUserMapper.queryPromoterApiList(phone, startTime, endTime, userModel.getIsProhibit(), partnerIds);
|
PageInfo<UserModel> pageInfo = new PageInfo<>(list);
|
|
for (UserModel model : list) {
|
String nickName = model.getNickName();
|
if (nickName != null && !"".equals(nickName)) {
|
nickName = com.xzx.gc.common.utils.StringUtils.decode(model.getNickName());
|
}
|
if (null != model.getFinishNum()) {
|
model.setRegistNum(String.valueOf(Integer.parseInt(model.getFinishNum()) + Integer.parseInt(model.getRegistNum())));
|
} else {
|
model.setRegistNum(model.getRegistNum());
|
}
|
model.setNickName(nickName);
|
if (null != model.getFinishNum()) {
|
String finishNum = model.getFinishNum();
|
String registNum = model.getRegistNum();
|
BigDecimal rate = new BigDecimal("0");
|
if (null != registNum && !"".equals(registNum)) {
|
if (registNum.equals("0")) {
|
rate = new BigDecimal("0");
|
} else {
|
rate = new BigDecimal(finishNum).divide(new BigDecimal(registNum), 3, BigDecimal.ROUND_DOWN);
|
}
|
}
|
model.setFinishRate(rate.multiply(new BigDecimal("100")).toString() + "%");
|
} else {
|
model.setFinishRate("0" + "%");
|
}
|
}
|
m.put("data", list);
|
m.put("count", pageInfo.getTotal());
|
m.put("code", 0);
|
return m;
|
}
|
|
public Map<String, Object> queryCollectorApiList(CollectorModel userModel) {
|
List<String> partnerIds = new ArrayList<>();
|
if (null != userModel.getPartnerId() && !"".equals(userModel.getPartnerId())) {
|
partnerIds.add(userModel.getPartnerId());
|
} else {
|
partnerIds = cityPartnerService.queryPartnerByCurrent();
|
}
|
userModel.setPartnerIds(partnerIds);
|
|
PageHelper.startPage(userModel.getPage(), userModel.getLimit());
|
List<CollectorModel> list = otherUserMapper.queryCollectorApiList(userModel);
|
PageInfo<CollectorModel> pageInfo = new PageInfo<>(list);
|
|
for (CollectorModel collectorModel : list) {
|
String nickName = "";
|
if (null != collectorModel.getStorageWeight() && !"".equals(collectorModel.getStorageWeight())) {
|
collectorModel.setStorageWeight(DoubleUtil.roundThree(collectorModel.getStorageWeight()));
|
|
} else {
|
collectorModel.setStorageWeight("0");
|
}
|
if (null != collectorModel.getStorageMoney() && !"".equals(collectorModel.getStorageMoney())) {
|
collectorModel.setStorageMoney(DoubleUtil.roundTwo(collectorModel.getStorageMoney()));
|
|
} else {
|
collectorModel.setStorageMoney("0");
|
}
|
if (collectorModel.getNickName() != null) {
|
nickName = com.xzx.gc.common.utils.StringUtils.decode(collectorModel.getNickName());
|
}
|
collectorModel.setNickName(nickName);
|
|
//回收员统计按重量支出返利
|
String totalWeightMoney = payInfoMapper.queryCollectorWM(collectorModel.getUserId());
|
collectorModel.setWeightMoney(DoubleUtil.roundTwo(totalWeightMoney));
|
}
|
|
//如果为入库员,需要管理订单数量
|
if (userModel.getUserType().equals("4")) {
|
for (CollectorModel collectorModel : list) {
|
String userId = collectorModel.getUserId();
|
int orderNum = 0;
|
List<String> orderList = orderStorageInfoMapper.orderListByStorageUserId(userId);
|
for (String orderIds : orderList) {
|
orderNum = orderNum + orderIds.split(",").length;
|
}
|
collectorModel.setOrderNum(orderNum);
|
//仓库名称
|
String sysStorage = sysStorageMapper.querySysStorageNameById(collectorModel.getSysStorageId());
|
collectorModel.setSysStorage(sysStorage);
|
}
|
}
|
Map<String, Object> resultMap = new HashMap<>();
|
resultMap.put("code", 0);
|
resultMap.put("data", list);
|
resultMap.put("count", pageInfo.getTotal());
|
return resultMap;
|
}
|
|
public Map<String, Object> queryPackageApiList(CollectorModel userModel) {
|
List<String> partnerIds = new ArrayList<>();
|
if (null != userModel.getPartnerId() && !"".equals(userModel.getPartnerId())) {
|
List<CityPartner> packageIdByPartnerId = cityPartnerService.findPackageIdByPartnerId(userModel.getPartnerId());
|
if (CollUtil.isNotEmpty(packageIdByPartnerId)) {
|
partnerIds = packageIdByPartnerId.stream().map(x -> x.getId().toString()).collect(Collectors.toList());
|
}
|
partnerIds.add(userModel.getPartnerId());
|
|
//partnerIds.add(userModel.getPartnerId());
|
} else {
|
partnerIds = cityPartnerService.queryPartnerByCurrent();
|
}
|
if (null != partnerIds && partnerIds.size() > 0) {
|
List<CityPartner> packageIdByPartnerId = cityPartnerService.findPackageIdByPartnerId(partnerIds.get(0));
|
|
for (CityPartner packageId : packageIdByPartnerId) {
|
partnerIds.add(packageId.getId().toString());
|
}
|
}
|
|
userModel.setPartnerIds(partnerIds);
|
|
PageHelper.startPage(userModel.getPage(), userModel.getLimit());
|
List<CollectorModel> list = otherUserMapper.queryCollectorApiList(userModel);
|
PageInfo<CollectorModel> pageInfo = new PageInfo<>(list);
|
|
for (CollectorModel collectorModel : list) {
|
String nickName = "";
|
if (null != collectorModel.getStorageWeight() && !"".equals(collectorModel.getStorageWeight())) {
|
collectorModel.setStorageWeight(DoubleUtil.roundThree(collectorModel.getStorageWeight()));
|
|
} else {
|
collectorModel.setStorageWeight("0");
|
}
|
if (null != collectorModel.getStorageMoney() && !"".equals(collectorModel.getStorageMoney())) {
|
collectorModel.setStorageMoney(DoubleUtil.roundTwo(collectorModel.getStorageMoney()));
|
|
} else {
|
collectorModel.setStorageMoney("0");
|
}
|
if (collectorModel.getNickName() != null) {
|
nickName = com.xzx.gc.common.utils.StringUtils.decode(collectorModel.getNickName());
|
}
|
collectorModel.setNickName(nickName);
|
|
//回收员统计按重量支出返利
|
String totalWeightMoney = payInfoMapper.queryCollectorWM(collectorModel.getUserId());
|
collectorModel.setWeightMoney(DoubleUtil.roundTwo(totalWeightMoney));
|
}
|
//如果为入库员,需要管理订单数量
|
if (userModel.getUserType().equals("7")) {
|
for (CollectorModel collectorModel : list) {
|
String userId = collectorModel.getUserId();
|
int orderNum = 0;
|
List<String> orderList = orderStorageInfoMapper.orderListByStorageUserId(userId);
|
for (String orderIds : orderList) {
|
orderNum = orderNum + orderIds.split(",").length;
|
}
|
collectorModel.setOrderNum(orderNum);
|
//仓库名称
|
String sysStorage = sysStorageMapper.querySysStorageNameById(collectorModel.getSysStorageId());
|
collectorModel.setSysStorage(sysStorage);
|
}
|
}
|
Map<String, Object> resultMap = new HashMap<>();
|
resultMap.put("code", 0);
|
resultMap.put("data", list);
|
resultMap.put("count", pageInfo.getTotal());
|
return resultMap;
|
}
|
|
|
public Map<String, Object> updateWarehouse(CollectorModel userModel) {
|
Map<String, Object> map = new HashMap<>();
|
String type = userModel.getUserType();
|
if (type.equals("0")) {
|
String sysStorageId = userModel.getSysStorageId();
|
String name = userModel.getSysStorage();
|
if (null != name) {
|
sysStorageMapper.updateSysStorageName(sysStorageId, name);
|
map.put("code", 0);
|
map.put("message", "修改成功");
|
} else {
|
map.put("code", -1);
|
map.put("message", "仓库名称不能为空");
|
}
|
} else {
|
String userId = userModel.getUserId();
|
String name = userModel.getName();
|
OtherUserInfo otherUserInfo = new OtherUserInfo();
|
otherUserInfo.setUserId(userId);
|
otherUserInfo.setName(name);
|
otherUserService.update(otherUserInfo);
|
map.put("code", 0);
|
map.put("message", "修改成功");
|
}
|
return map;
|
}
|
|
public Map<String, Object> queryUnregisteredApiList(CollectorModel collectorModel) {
|
List<String> partnerIds = new ArrayList<>();
|
if (null != collectorModel.getPartnerId() && !"".equals(collectorModel.getPartnerId())) {
|
partnerIds.add(collectorModel.getPartnerId());
|
} else {
|
partnerIds = cityPartnerService.queryPartnerByCurrent();
|
}
|
collectorModel.setPartnerIds(partnerIds);
|
PageHelper.startPage(collectorModel.getPage(), collectorModel.getLimit());
|
List<CollectorModel> list = userTargetInfoMapper.queryUnregisteredApiList(collectorModel);
|
PageInfo<CollectorModel> pageInfo = new PageInfo<>(list);
|
for (CollectorModel collect : list) {
|
if (null != collect.getNickName() && !"".equals(collect.getNickName())) {
|
if (com.xzx.gc.common.utils.StringUtils.isBase64(collect.getNickName())) {
|
collect.setNickName(cn.hutool.core.codec.Base64.decodeStr(collect.getNickName()));
|
}
|
}
|
if (null != collect.getPartnerName() && !"".equals(collect.getPartnerName())) {
|
|
} else {
|
collect.setPartnerName("-");
|
}
|
}
|
Map<String, Object> map = new HashMap<>();
|
map.put("code", 0);
|
map.put("data", list);
|
map.put("count", pageInfo.getTotal());
|
return map;
|
}
|
|
public void updateUserNameApi(String userId, String name, String mobile, String type) {
|
if (null != type && !"".equals(type)) {
|
if (type != "1") {
|
otherUserMapper.updateOtherUserName(userId, name, mobile);
|
}
|
}
|
userMapper.updateUserName(userId, name, mobile);
|
}
|
|
public Map<String, Object> queryApiCuserDetail(String userId, String phone, String userType, int page, int limit) {
|
|
Map<String, Object> m = new HashMap<>();
|
// 查询用户信息
|
m.put("user", userMapper.queryCuserDetail(phone, userType));
|
// 查询用户地址
|
m.put("address", addressMapper.queryCuserAddress(phone, userId));
|
// 查询统计用户的订单, 这里面问题,如是普通用户对应为create_userid, 如是回收员或代丢员对应为recice
|
Integer[] x = new Integer[3];
|
x[0] = 4;
|
x[1] = 5;
|
x[2] = 7;
|
List<Map<String, Object>> om = orderMapper.queryCuserOrderCount(userId, x);
|
PageHelper.startPage(page, limit);
|
List<Map<String, Object>> odlist = orderMapper.queryCuserOrderFinishList(userId, x);
|
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(odlist);
|
for (Map<String, Object> map : odlist) {
|
// map.put("money", DoubleUtil.roundTwo(map.get("money").toString()));
|
// map.put("weight", DoubleUtil.roundThree(map.get("weight").toString()));
|
// map.put("orderid", map.get("orderId").toString());
|
// map.put("createtime", map.get("createTime").toString());
|
map.put("orderid", String.valueOf(map.get("orderId")));
|
map.put("address", String.valueOf(map.get("address")));
|
map.put("status", map.get("status"));
|
map.put("type", map.get("type"));
|
map.put("money", DoubleUtil.roundTwo(String.valueOf(map.get("money"))));
|
map.put("score", DoubleUtil.roundTwo(String.valueOf(map.get("score"))));
|
map.put("weight", DoubleUtil.roundThree(String.valueOf(map.get("weight"))));
|
map.put("name", String.valueOf((ObjectUtil.isEmpty(map.get("name"))?"-":m.get("name"))));
|
map.put("createtime", String.valueOf(map.get("createTime")));
|
|
String type = String.valueOf(map.get("type"));
|
if("1".equals(type)){
|
List<CategaryVo> categaryVos = orderMapper.selectListByOrderId(String.valueOf(map.get("orderId")));
|
map.put("categary",categaryVos);
|
}
|
if("2".equals(type)){
|
List<CategaryVo> categaryVos = orderMapper.selectJHYListByOrderId(String.valueOf(map.get("orderId")));
|
map.put("categary",categaryVos);
|
}
|
}
|
m.put("orderList", odlist);
|
m.put("count", pageInfo.getTotal());
|
m.put("orderNum", om);
|
m.put("code", 0);
|
|
return m;
|
}
|
|
public void add(UserInfo userInfo) {
|
userMapper.insertSelective(userInfo);
|
}
|
|
}
|