package com.ibeetl.admin.console.service;
|
|
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.lang.Singleton;
|
import cn.hutool.core.lang.Snowflake;
|
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
|
import cn.hutool.crypto.symmetric.SymmetricCrypto;
|
import cn.hutool.json.JSONUtil;
|
import cn.jiguang.common.ClientConfig;
|
import cn.jiguang.common.resp.APIConnectionException;
|
import cn.jiguang.common.resp.APIRequestException;
|
import cn.jpush.api.JPushClient;
|
import cn.jpush.api.push.model.Platform;
|
import cn.jpush.api.push.model.PushPayload;
|
import cn.jpush.api.push.model.audience.Audience;
|
import cn.jpush.api.push.model.notification.Notification;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.ibeetl.admin.console.dao.*;
|
import com.ibeetl.admin.console.model.*;
|
import com.ibeetl.admin.console.rabbitmq.MqConstants;
|
import com.ibeetl.admin.console.rabbitmq.MqUtil;
|
import com.ibeetl.admin.console.util.ChineseToSpell;
|
import com.ibeetl.admin.console.util.DateUtil;
|
import com.ibeetl.admin.console.util.DoubleUtil;
|
import com.ibeetl.admin.console.util.HttpClientUtils;
|
import com.ibeetl.admin.core.conf.PasswordConfig;
|
import com.ibeetl.admin.core.entity.CoreUser;
|
import com.ibeetl.admin.core.entity.XzxCityPartner;
|
import com.ibeetl.admin.core.service.CorePlatformService;
|
import com.ibeetl.admin.core.util.fileexport.FileExportUtil;
|
import com.ibeetl.admin.core.web.JsonResult;
|
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.beetl.sql.core.kit.Constants;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.management.remote.rmi._RMIConnection_Stub;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.UnsupportedEncodingException;
|
import java.lang.reflect.Field;
|
import java.lang.reflect.Modifier;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
/**
|
* 用户管理----->身份设定
|
*/
|
@Service
|
public class CuserConsoleService {
|
|
@Value("${file.export.path}")
|
String exportPaht;
|
|
@Autowired
|
CuserConsoleDao dao;
|
|
@Autowired
|
OrderManageDao orderManageDao;
|
|
@Autowired
|
MoneyConsoleDao moneyConsoleDao;
|
|
@Autowired
|
EchartConsoleDao echartConsoleDao;
|
|
@Autowired
|
RedisService redisService;
|
|
@Autowired
|
CuserConsoleDao cuserConsoleDao;
|
|
@Autowired
|
SettingConsoleDao settingConsoleDao;
|
@Autowired
|
XzxOrderAppraiseInfoDao xzxOrderAppraiseInfoDao;
|
@Autowired
|
CorePlatformService platformService;
|
@Autowired
|
XzxElectronicFenceService eleService;
|
@Autowired
|
XzxCityPartnerService cityPartnerService;
|
@Autowired
|
MqUtil mqUtil;
|
//抢单
|
public static final String GRAB_ORDER_TAG="grabOrder";
|
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
|
final Base64 base64 = new Base64();
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
/**
|
* C端用户管理---用户查询
|
* @param userType
|
* @param name
|
* @param phone
|
* @param page
|
* @param limit
|
* @return
|
*/
|
public Map<String, Object> queryCuserList(String userType, String name, String phone, String page, String limit){
|
int p = Integer.parseInt(page);
|
p = (p - 1) * Integer.parseInt(limit);
|
if(!StringUtils.isEmpty(name)){
|
name = new String(Base64.encodeBase64(name.getBytes()));
|
}
|
Map<String, Object> m = new HashMap<>();
|
List<UserModel> map = dao.queryCuserList(userType, name, phone, p, Integer.parseInt(limit));
|
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(mx.getUserTypex().equals("1")){
|
// 待完成订单总数
|
mx.setOrderStatus3(orderManageDao.queryCuserOrderByUserIdCount(mx.getUserId(), orderStatus1));
|
// 累计完成订单总数
|
mx.setOrderStatus5(orderManageDao.queryCuserOrderByUserIdCount(mx.getUserId(), orderStatus2));
|
}else if(mx.getUserTypex().equals("2") || mx.getUserTypex().equals("3")){
|
// 回收员,代丢员
|
// 待完成订单总数
|
mx.setOrderStatus3(orderManageDao.queryCuserOrderByUserIdCountx(mx.getUserId(), orderStatus1));
|
// 累计完成订单总数
|
mx.setOrderStatus5(orderManageDao.queryCuserOrderByUserIdCountx(mx.getUserId(), orderStatus2));
|
}
|
}
|
m.put("count", dao.queryCuserListCount(userType, name, phone));
|
m.put("data", map);
|
m.put("code", 0);
|
return m;
|
}
|
|
public void UpdateUserApiByUserId(String isProhibit,String userId,String userType){
|
UserModel userModel = new UserModel();
|
userModel = dao.queryUserById(userId);
|
boolean bool = false;
|
if(isProhibit.equals("1")){
|
bool = true;
|
if (userModel == null) {
|
if(userType.equals("6")){
|
dao.UpdateUserApiByTargetUserId(bool,userId);
|
}
|
dao.UpdateUserApiByOtherUserId(bool,userId,userType);
|
}else{
|
if(userType.equals("6")){
|
dao.UpdateUserApiByTargetUserId(bool,userId);
|
}
|
dao.UpdateUserApiByUserId(bool ,userId);
|
}
|
|
}else{
|
if (userModel == null) {
|
if(userType.equals("6")){
|
dao.UpdateUserApiByTargetUserId(bool,userId);
|
}
|
dao.UpdateUserApiByOtherUserId(bool,userId,userType);
|
}else {
|
if(userType.equals("6")){
|
dao.UpdateUserApiByTargetUserId(bool,userId);
|
}
|
dao.UpdateUserApiByUserId(bool, userId);
|
|
}
|
}
|
}
|
|
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){
|
dao.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();
|
dao.updateStorageUserNameById(userId,name);
|
map.put("code",0);
|
map.put("message","修改成功");
|
}
|
return map;
|
}
|
public Map<String, Object> queryPackageApiList(CollectorModel userModel){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
userModel.setPartnerIds(partnerIds);
|
int page = userModel.getPage();
|
int limit = userModel.getLimit();
|
int p = page;
|
p = (p - 1) * limit;
|
userModel.setPage(p);
|
List<CollectorModel> list = dao.queryCollectorApiList(userModel);
|
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){
|
try {
|
nickName =new String(base64.decode(collectorModel.getNickName()), "UTF-8");
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
collectorModel.setNickName(nickName);
|
|
//回收员统计按重量支出返利
|
String totalWeightMoney = dao.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 = dao.orderListByStorageUserId(userId);
|
for (String orderIds:orderList) {
|
orderNum = orderNum+orderIds.split(",").length;
|
}
|
collectorModel.setOrderNum(orderNum);
|
//仓库名称
|
String sysStorage = dao.querySysStorageNameById(collectorModel.getSysStorageId());
|
collectorModel.setSysStorage(sysStorage);
|
}
|
}
|
Map<String,Object> resultMap = new HashMap<>();
|
resultMap.put("code",0);
|
resultMap.put("data",list);
|
resultMap.put("count",dao.queryCollectorApiCount(userModel));
|
return resultMap;
|
}
|
public Map<String, Object> queryCollectorApiList(CollectorModel userModel) {
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
userModel.setPartnerIds(partnerIds);
|
int page = userModel.getPage();
|
int limit = userModel.getLimit();
|
int p = page;
|
p = (p - 1) * limit;
|
userModel.setPage(p);
|
List<CollectorModel> list = dao.queryCollectorApiList(userModel);
|
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){
|
try {
|
nickName =new String(base64.decode(collectorModel.getNickName()), "UTF-8");
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
collectorModel.setNickName(nickName);
|
|
//回收员统计按重量支出返利
|
String totalWeightMoney = dao.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 = dao.orderListByStorageUserId(userId);
|
for (String orderIds:orderList) {
|
orderNum = orderNum+orderIds.split(",").length;
|
}
|
collectorModel.setOrderNum(orderNum);
|
//仓库名称
|
String sysStorage = dao.querySysStorageNameById(collectorModel.getSysStorageId());
|
collectorModel.setSysStorage(sysStorage);
|
}
|
}
|
Map<String,Object> resultMap = new HashMap<>();
|
resultMap.put("code",0);
|
resultMap.put("data",list);
|
resultMap.put("count",dao.queryCollectorApiCount(userModel));
|
return resultMap;
|
}
|
|
public Map<String,Object> queryUserOrderApiList(UserModel userModel){
|
Map<String, Object> m = new HashMap<>();
|
int page = userModel.getPage();
|
int limit = userModel.getLimit();
|
int p = page;
|
p = (p - 1) * limit;
|
List<OrderModel> userOrderList = dao.queryUserOrderApiList(userModel.getUserId(),p,userModel.getLimit());
|
int count = dao.queryUserOrderApiCount(userModel.getUserId());
|
m.put("count", count);
|
m.put("data", userOrderList);
|
m.put("code", 0);
|
return m;
|
}
|
public Map<String, Object> queryCuserForTimeList(UserModel userModel){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
String partnerId = partnerIds.get(0);
|
List<String> townIds = cityPartnerService.queryTownIdsByPartnerId(partnerId);
|
userModel.setTownIds(townIds);
|
}
|
int page = userModel.getPage();
|
int limit = userModel.getLimit();
|
int p = page;
|
p = (p - 1) * limit;
|
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<>();
|
List<UserModel> map = dao.queryCuserForTimeList(phone,startTime, endTime, p, limit,userModel.getUserType(),isProhibit,partnerIds,userModel.getTownIds());
|
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(mx.getUserTypex().equals("1")){
|
if(!StringUtils.isEmpty(mx.getNickName())){
|
try {
|
mx.setNickName(new String(base64.decode(mx.getNickName()), "UTF-8"));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
// 待完成订单总数
|
Map<String,Object> osMap = orderManageDao.queryCuserOrderByUserIdCount1(mx.getUserId());
|
mx.setOrderStatus3(Integer.parseInt(osMap.get("count1").toString()));
|
mx.setOrderStatus5(Integer.parseInt(osMap.get("count").toString()));
|
String tgName = dao.queryTgNameByRealUserId(mx.getMobilePhone());
|
if(null!=tgName&&!"".equals(tgName)){
|
mx.setTgName(tgName);
|
}else{
|
mx.setTgName("无");
|
}
|
}else if(mx.getUserTypex().equals("2") || mx.getUserTypex().equals("3")){
|
// 回收员,代丢员
|
// 待完成订单总数
|
mx.setOrderStatus3(orderManageDao.queryCuserOrderByUserIdCountx(mx.getUserId(), orderStatus1));
|
// 累计完成订单总数
|
mx.setOrderStatus5(orderManageDao.queryCuserOrderByUserIdCountx(mx.getUserId(), orderStatus2));
|
}
|
}
|
int count = dao.queryCuserForTimeListCount(phone,startTime,endTime,userModel.getUserType(),partnerIds,userModel.getTownIds());
|
m.put("count", count);
|
m.put("data", map);
|
m.put("code", 0);
|
// 总用户量
|
int allNomUser=dao.queryCuserForTimeListCount(null,null,null,null,partnerIds,userModel.getTownIds());
|
// 今日新增用户
|
String dbTime = echartConsoleDao.queryDbTime();
|
String[] dt = dbTime.split(" ");
|
String stTime = dt+" 00:00:00";
|
String edTime = dt+" 23:59:59";
|
int todayNewUser=dao.queryCuserForTimeListCount(null,stTime,edTime,null,partnerIds,userModel.getTownIds());
|
//日活跃用户
|
//查询日活
|
int userVisit = 0;
|
Map<String,Object> dayCountMap = cuserConsoleDao.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 Map<String, Object> queryPromoterApiList(UserModel userModel) {
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
int page = userModel.getPage();
|
int limit = userModel.getLimit();
|
int p = page;
|
p = (p - 1) * limit;
|
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<>();
|
list = dao.queryPromoterApiList(phone,startTime, endTime, p, limit,userModel.getIsProhibit(),partnerIds);
|
|
for (UserModel model:list) {
|
String nickName = model.getNickName();
|
if(nickName!=null&&!"".equals(nickName)){
|
try {
|
nickName =new String(base64.decode(model.getNickName()), "UTF-8");
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
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(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",dao.queryPromoterApiCount(phone,startTime, endTime,userModel.getIsProhibit(),partnerIds));
|
m.put("code",0);
|
return m;
|
}
|
/**
|
* 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", dao.queryCuserDetail(phone, userType, "xzx_user_info"));
|
// 查询用户地址
|
m.put("address", dao.queryCuserAddress(phone, userId));
|
|
m.put("userOrderList",dao.queryUserOrderList(userId));
|
// 查询统计用户的订单, 这里面问题,如是普通用户对应为create_userid, 如是回收员或代丢员对应为recice
|
Integer[] x = new Integer[2];
|
x[0] = 4;
|
x[1] = 5;
|
List<Map<String, Object>> om = dao.queryCuserOrderCount(userId, x);
|
m.put("orderNum", om);
|
|
return m;
|
}
|
|
|
/**
|
* C端用户管理---用户查询----详情
|
* @param userId
|
* @param phone
|
* @param userType
|
* @return
|
*/
|
public Map<String, Object> queryApiCuserDetail(String userId, String phone, String userType,int page,int limit){
|
|
Map<String, Object> m = new HashMap<>();
|
// 查询用户信息
|
m.put("user", dao.queryCuserDetail(phone, userType, "xzx_user_info"));
|
// 查询用户地址
|
m.put("address", dao.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 = dao.queryCuserOrderCount(userId, x);
|
int p = page;
|
p = (p - 1) * limit;
|
List<Map<String, Object>> odlist = dao.queryCuserOrderFinishList(userId, x,p,limit);
|
for (Map<String, Object> map:odlist) {
|
map.put("money",DoubleUtil.roundTwo(map.get("money").toString()));
|
map.put("weight",DoubleUtil.roundThree(map.get("weight").toString()));
|
}
|
m.put("orderList",odlist);
|
m.put("count",dao.queryCuserOrderFinishCount(userId, x));
|
m.put("orderNum", om);
|
m.put("code",0);
|
|
return m;
|
}
|
|
/**
|
* 根据用户ID查询
|
* @param userId
|
* @return
|
*/
|
public UserModel queryUserById(String userId){
|
return dao.queryUserById(userId);
|
}
|
|
public UserModel queryUserOtherById(String userId){
|
return dao.queryUserOtherById(userId);
|
}
|
public List<UserModel> queryUserOtherByPhone(String phone){
|
return dao.queryUserOtherByPhone(phone);
|
}
|
public List<OrderModel> queryOrderByPhone(String phone){
|
return dao.queryOrderByPhone(phone);
|
}
|
public UserModel queryUserOtherByIdC(String userId){
|
return dao.queryUserOtherByIdC(userId);
|
}
|
/**
|
* C端用户管理---用户查询----详情 订单列表
|
* @param userId
|
* @param orderStatus
|
* @param page
|
* @param limit
|
* @return
|
*/
|
public Map<String, Object> queryCuserOrder(String userId, List<String> orderStatus, String userType, int page, int limit){
|
page = (page - 1) * limit;
|
Map<String, Object> m = new HashMap<>();
|
if(userType.equals("1")){
|
m.put("count", orderManageDao.queryCuserOrderByUserIdCount(userId, orderStatus));
|
m.put("data", orderManageDao.queryCuserOrderByUserId(userId, orderStatus, page, limit));
|
m.put("code", 0);
|
}else if(userType.equals("2") || userType.equals("3")){
|
m.put("count", orderManageDao.queryCuserOrderByUserIdCountx(userId, orderStatus));
|
m.put("data", orderManageDao.queryCuserOrderByUserIdx(userId, orderStatus, page, limit));
|
m.put("code", 0);
|
}
|
return m;
|
}
|
|
/**
|
* 根据用户ID查询用户的充值和体现记录
|
* @param userId
|
* @param payType
|
* @param tStatus
|
* @param page
|
* @param limit
|
* @return
|
*/
|
public Map<String, Object> queryCuserMoneyLog(String userId, String payType, String tStatus,String xStatus, int page, int limit){
|
page = (page - 1) * limit;
|
Map<String, Object> m = new HashMap<>();
|
m.put("data", moneyConsoleDao.queryCuserMoneyLog(userId, payType, tStatus,xStatus, page, limit));
|
m.put("count", moneyConsoleDao.queryCuserMoneyLogCount(userId, payType,xStatus, tStatus));
|
m.put("code", 0);
|
return m;
|
}
|
|
|
/**
|
* 根据手机号码查询用户
|
* @param phone
|
* @return
|
*/
|
public Map<String, Object> queryCuserByPhoneList(String phone,String page,String limit){
|
int p = Integer.parseInt(page);
|
p = (p - 1) * Integer.parseInt(limit);
|
|
List<UserModel> map = dao.queryCuserByPhoneList(phone, "xzx_user_other_info", p, Integer.parseInt(limit));
|
int count = dao.queryCuserByPhoneCount(phone, "xzx_user_other_info");
|
Map<String, Object> m = new HashMap<>();
|
m.put("data", map);
|
m.put("count", count);
|
m.put("code", 0);
|
return m;
|
}
|
|
/**
|
* 根据手机号码查询用户
|
* @param phone
|
* @return
|
*/
|
public Map<String, Object> queryCuserByPhone(String phone){
|
List<UserModel> map = dao.queryCuserByPhone(phone, "xzx_user_other_info");
|
List<UserModel> temp = dao.queryCuserByPhone(phone, "xzx_user_info");
|
for(UserModel m : temp){
|
map.add(m);
|
}
|
Map<String, Object> m = new HashMap<>();
|
m.put("data", map);
|
m.put("count", map.size());
|
m.put("code", 0);
|
return m;
|
}
|
|
public UserModel queryCuserByUsertype(String phone, String uesrType,String normal){
|
return dao.queryUserByUsertype(phone, uesrType, "0", "xzx_user_info",normal,null);
|
}
|
|
public List<Map<String,Object>> queryStoreList(){
|
return dao.queryStoreList();
|
}
|
|
public String queryAreaName(String type,String id){
|
if(type.equals("1")){
|
return dao.queryProvinceById(id);
|
}else if(type.equals("2")){
|
return dao.queryCityByCityId(id);
|
}else{
|
return dao.queryTownShipByTownId(id);
|
}
|
}
|
@Transactional(rollbackFor = {})
|
public int insertUserOtherInfo(UserModel userModel){
|
return dao.insertUserOtherInfo(userModel);
|
}
|
/**
|
* 获取设备标识 15位 Android设备一般使用imei号码,iOS一般使用idfv号
|
* @param diu
|
* @return
|
*/
|
public static String getDiu(String diu){
|
if(StrUtil.isBlank(diu)){
|
return RandomUtil.randomString(15);
|
}else {
|
if (diu.length() > 15) {
|
return StrUtil.subWithLength(diu, 0, 15);
|
} else if(diu.length()<15){
|
return StrUtil.fill(diu, Convert.toChar("0"), 15, false);
|
}else{
|
return diu;
|
}
|
}
|
}
|
|
private <T> List<T> stringArray2List(List<String> data, Class<T> clazz) throws Exception {
|
List<T> ts = new ArrayList<>();
|
Field[] fields = clazz.getDeclaredFields();
|
int len = data.size()/fields.length;
|
int m = data.size()%fields.length;
|
if(m>0){
|
len = len+1;
|
}
|
for(int i=0;i<len;i++){
|
T t = clazz.newInstance();
|
String[] strObj;
|
if(i==len-1){
|
strObj = Arrays.copyOfRange(data.toArray(new String[data.size()]),i*fields.length,data.size());
|
}else{
|
strObj = Arrays.copyOfRange(data.toArray(new String[data.size()]),i*fields.length,(i+1)*fields.length);
|
}
|
for(int j=0;j<fields.length;j++){
|
int mod = fields[j].getModifiers();
|
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
|
continue;
|
}
|
fields[j].setAccessible(true);
|
fields[j].set(t, strObj[j]);
|
}
|
ts.add(t);
|
}
|
return ts;
|
}
|
private String checkElectricByLocations(String orderId,String keys,String point){
|
String diu =getDiu(orderId);
|
String gid = "";
|
//String keys ="a64d28b2e036f4688b05916ef321b17d";
|
String time = System.currentTimeMillis()+"";
|
time = time.substring(0,10);
|
String locations=point+","+time;
|
String uri = "https://restapi.amap.com/v4/geofence/status?key="+keys+"&diu="+diu+"&locations="+ locations;
|
System.out.println(uri);
|
String result = HttpClientUtils.doGet(uri);
|
Map maps = (Map) JSON.parse(result);
|
String str2=maps.get("data").toString();
|
Map maps2 = (Map)JSON.parse(str2);
|
if(null!=maps2.get("fencing_event_list")){
|
String listStr = maps2.get("fencing_event_list").toString();
|
List<Map<String,String>> listObjectFir = (List<Map<String,String>>) JSONArray.parse(listStr);
|
System.out.println("利用JSONArray中的parse方法来解析json数组字符串");
|
System.out.println("===="+listObjectFir.size());
|
|
for(Map<String,String> mapList : listObjectFir){
|
Object value = mapList.get("fence_info");
|
//JSONObject obj= (JSONObject)mapList.get("fence_info");
|
|
Map maps3 = JSONObject.parseObject(JSONObject.toJSONString(value), Map.class);
|
gid =maps3.get("fence_gid").toString();
|
break;
|
}
|
}
|
|
return gid;
|
}
|
public static void main(String[] args) {
|
String orderId=DateUtil.generate("DD", 1);
|
|
}
|
@Transactional(rollbackFor = {})
|
public UserModel insertUserInfo(OrderModel orderModel,String appKey,String secret,List<String> keys,String isNomal){
|
String eleId ="";
|
String townCode =dao.queryTownCodeByTownName(orderModel.getTownshipId());
|
List<String> townList = eleService.queryTownListByArea(townCode,null);
|
if(townList.size()>0){
|
eleId = townList.get(0);
|
}
|
UserModel userModel = new UserModel();
|
Snowflake snowflake = IdUtil.getSnowflake(0, 3);
|
String orderId=DateUtil.generate("DD", 1);
|
userModel.setUserType("1");
|
userModel.setMobilePhone(orderModel.getMobilePhone());
|
if(!StringUtils.isEmpty(orderModel.getNickName())){
|
userModel.setNickName(new String(Base64.encodeBase64(orderModel.getNickName().getBytes())));
|
}
|
if(isNomal.equals("0")){
|
String salt =DateUtil.getRandomNickname(16);
|
String pass = DateUtil.encrypt(salt,"123456");
|
userModel.setSalt(salt);
|
userModel.setPassword(pass);
|
userModel.setOrderNum(0);
|
userModel.setDelFlag("0");
|
}
|
//添加地址
|
String proviceId =dao.queryProvinceByName(orderModel.getProvinceId());
|
String cityId =dao.queryCityByCityName(orderModel.getCityId());
|
String townId =dao.queryTownShipByTownName(orderModel.getTownshipId());
|
|
if(null==proviceId){
|
proviceId = orderModel.getProvinceId();
|
}
|
if(null==cityId){
|
cityId = orderModel.getCityId();
|
}
|
if(null==townId){
|
townId = orderModel.getTownshipId();
|
}
|
userModel.setProvince(ChineseToSpell.getPingYin(orderModel.getProvinceId()));
|
userModel.setCity(ChineseToSpell.getPingYin(orderModel.getCityId()));
|
|
userModel.setLongitude(orderModel.getLongitude());
|
userModel.setLatitude(orderModel.getLatitude());
|
//判断是否为第一次电话下单用户
|
String userType = "1";
|
UserModel oldUserModel = new UserModel();
|
if(isNomal.equals("0")){
|
oldUserModel =queryCuserByUsertype(orderModel.getMobilePhone(), userType,"3");
|
}else{
|
oldUserModel =queryCuserByUsertype(orderModel.getMobilePhone(), userType,null);
|
}
|
if(oldUserModel != null){
|
userModel.setRegistType(oldUserModel.getRegistType());
|
dao.updateUserInfo(userModel);
|
//if(dao.updateUserInfo(userModel)>0){
|
//修改地址
|
UserAddressModel paramUserAddress = new UserAddressModel();
|
paramUserAddress.setUserId(oldUserModel.getUserId());
|
paramUserAddress.setMobilePhone(orderModel.getMobilePhone());
|
List<UserAddressModel> addressModels = dao.queryUserAddressList(paramUserAddress);
|
boolean bool =true;
|
String addressId= null;
|
for (UserAddressModel obj:addressModels) {
|
if(isNomal.equals("1")){
|
addressId=obj.getAddressId();
|
break;
|
}
|
|
if(obj.getDetailAddress().equals(orderModel.getDetailAddress())){
|
bool = false;
|
addressId = obj.getAddressId();
|
break;
|
}
|
}
|
if(!bool){
|
UserAddressModel userAddressModel = updateUserAddress(orderModel,oldUserModel.getUserId(),cityId,proviceId,townId);
|
}else{
|
UserAddressModel paramModel = new UserAddressModel();
|
paramModel.setUserId(orderModel.getUserId());
|
paramModel.setMobilePhone(orderModel.getMobilePhone());
|
paramModel.setAddressId(addressId);
|
UserAddressModel userAddressModel=updateUserAddressTwo(paramModel);
|
}
|
if(null!=orderModel.getOrderId()&&!"".equals(orderModel.getOrderId())){
|
|
}else{
|
orderModel.setOrderId(orderId);
|
}
|
orderModel.setUserId(oldUserModel.getUserId());
|
String point = orderModel.getLongitude()+","+orderModel.getLatitude();
|
//判断是否在围栏中
|
boolean bool1 = false;
|
if(null!=eleId&&!"".equals(eleId)){
|
bool1 = true;
|
}else{
|
String gid="";
|
for (String key:keys){
|
gid = checkElectricByLocations(orderId,key,point);
|
if(null!=gid&&!"".equals(gid)){
|
bool1 = true;
|
break;
|
}
|
}
|
/*if(!bool1){
|
return null;
|
}*/
|
//查询电子围栏Id
|
eleId = dao.queryEleIdByGid(gid);
|
}
|
UserAddressModel userAddressModel = insertUserAddress(orderModel,oldUserModel.getUserId(),cityId,proviceId,townId);
|
orderModel.setAddressId(userAddressModel.getAddressId());
|
orderModel.setCreateUserId(userModel.getNickName());
|
//添加订单,订单详情,订单物品表
|
insertOrder(orderModel,eleId);
|
//发队列 和更新redis缓存
|
sendOperationLog(orderModel);
|
//极光推送发抢单
|
Map<String, String> objectObjectHashMap = new HashMap<>();
|
objectObjectHashMap.put("newOrder", "{}");
|
sendByAnroid("您有新的订单", "抢单", objectObjectHashMap, Audience.tag(GRAB_ORDER_TAG + "_" + townId),appKey,secret);
|
|
//}
|
}else{
|
String userId= DateUtil.generate("YH", 3);
|
userModel.setUserId(userId);
|
if(dao.insertUserInfo(userModel)>0){
|
//新建普通用户账号
|
String id="ZH"+snowflake.nextIdStr();
|
Map<String,Object> setMap = new HashMap<>();
|
String value = "0";
|
orderModel.setOrderId(orderId);
|
String point = orderModel.getLongitude()+","+orderModel.getLatitude();
|
//判断是否在围栏中
|
boolean bool = false;
|
if(null!=eleId&&!"".equals(eleId)){
|
bool = true;
|
}else{
|
String gid="";
|
for (String key:keys){
|
gid = checkElectricByLocations(orderId,key,point);
|
if(null!=gid&&!"".equals(gid)){
|
bool = true;
|
break;
|
}
|
}
|
if(!bool){
|
return null;
|
}
|
//查询电子围栏Id
|
eleId = dao.queryEleIdByGid(gid);
|
}
|
dao.addCuserAccountRole(id, orderModel.getMobilePhone(), userId,value);
|
UserAddressModel userAddressModel = insertUserAddress(orderModel,userId,cityId,proviceId,townId);
|
orderModel.setUserId(userId);
|
//添加订单,订单详情,订单物品表
|
orderModel.setAddressId(userAddressModel.getAddressId());
|
orderModel.setCreateUserId(userModel.getNickName());
|
|
insertOrder(orderModel,eleId);
|
//发队列 和更新redis缓存
|
sendOperationLog(orderModel);
|
//极光推送发抢单
|
Map<String, String> objectObjectHashMap = new HashMap<>();
|
objectObjectHashMap.put("newOrder", "{}");
|
|
sendByAnroid("您有新的订单", "抢单", objectObjectHashMap, Audience.tag(GRAB_ORDER_TAG + "_" + townId),appKey,secret);
|
}
|
}
|
|
return userModel;
|
}
|
|
public String queryTownShipByTownName(String townId){
|
return dao.queryTownShipByTownName(townId);
|
}
|
public List<String> queryElectricTownIds(String partnerId){
|
return dao.queryElectricTownIds(partnerId);
|
}
|
public List<String> queryTownIdsByCode(List<String> townIds){
|
return dao.queryTownIdsByCode(townIds);
|
}
|
|
private void sendOperationLog(OrderModel orderModel){
|
OrderOperationLogModel operationLogModel = new OrderOperationLogModel();
|
operationLogModel.setOrderId(orderModel.getOrderId());
|
operationLogModel.setOperateContent("创建订单");
|
operationLogModel.setOrderStatus("1");
|
operationLogModel.setOrderSecondStatus("1");
|
operationLogModel.setOperateTime(sdf.format(new Date()));
|
CoreUser user = platformService.getCurrentUser();
|
operationLogModel.setOperateUserId(String.valueOf(user.getId()));
|
mqUtil.send(MqConstants.ORDER_OPERATION_LOG_QUEUE,operationLogModel);
|
//
|
redisService.set("xzx:order:status:"+orderModel.getOrderId(),"0");
|
}
|
private void insertOrder(OrderModel orderModel,String townId){
|
//String orderId=DateUtil.generate("DD", 1);
|
//orderModel.setOrderId(orderId);
|
orderModel.setReserveTime(orderModel.getReserveDay()+" "+orderModel.getReserveDate()+":00");
|
orderModel.setCreateUserId(orderModel.getUserId());
|
orderModel.setTownshipId(townId);
|
orderModel.setOrderStatus("1");
|
if(null!=orderModel.getStoreId()&&!"".equals(orderModel.getStoreId())){
|
orderManageDao.addOrderInfoApi(orderModel);
|
|
}else{
|
orderModel.setStoreId(null);
|
orderManageDao.addOrderInfoApi(orderModel);
|
|
}
|
|
orderManageDao.addOrderDetailApi(orderModel);
|
if(!StringUtils.isEmpty(orderModel.getItemIds())){
|
String itemIds = orderModel.getItemIds();
|
String[] items = itemIds.split(",");
|
List<OrderItemModel> list = new ArrayList<>();
|
for (String itemType:items) {
|
OrderItemModel itemModel = new OrderItemModel();
|
itemModel.setOrderId(orderModel.getOrderId());
|
itemModel.setItemType(itemType);
|
list.add(itemModel);
|
}
|
orderManageDao.addOrderItem(list);
|
}
|
}
|
/**
|
* 添加地址表
|
* @param orderModel
|
* @param userId
|
* @return
|
*/
|
private UserAddressModel insertUserAddress(OrderModel orderModel,String userId,String cityId,String proviceId,String townId){
|
//添加地址
|
UserAddressModel addressModel = new UserAddressModel();
|
addressModel.setAddressArea(orderModel.getAddressArea());
|
addressModel.setMobilePhone(orderModel.getMobilePhone());
|
addressModel.setCityId(cityId);
|
addressModel.setProvinceId(proviceId);
|
addressModel.setDetailAddress(orderModel.getDetailAddress());
|
addressModel.setLatitude(orderModel.getLatitude());
|
addressModel.setLongitude(orderModel.getLongitude());
|
addressModel.setTownshipId(townId);
|
addressModel.setUserId(userId);
|
addressModel.setRelaPhone(orderModel.getMobilePhone());
|
addressModel.setRelaName(orderModel.getNickName());
|
dao.insertUserAddress(addressModel);
|
addressModel = dao.queryUserAddressInfo(userId,orderModel.getMobilePhone());
|
return addressModel;
|
}
|
|
|
private UserAddressModel updateUserAddress(OrderModel orderModel,String userId,String cityId,String proviceId,String townId){
|
//添加地址
|
UserAddressModel addressModel = new UserAddressModel();
|
addressModel.setMobilePhone(orderModel.getMobilePhone());
|
addressModel.setUserId(userId);
|
dao.updateUserAddress(addressModel);
|
UserAddressModel newAddressModel = new UserAddressModel();
|
newAddressModel.setAddressArea(orderModel.getAddressArea());
|
newAddressModel.setCityId(cityId);
|
newAddressModel.setProvinceId(proviceId);
|
newAddressModel.setDetailAddress(orderModel.getDetailAddress());
|
newAddressModel.setLatitude(orderModel.getLatitude());
|
newAddressModel.setLongitude(orderModel.getLongitude());
|
newAddressModel.setTownshipId(townId);
|
newAddressModel.setUserId(userId);
|
newAddressModel.setRelaPhone(orderModel.getMobilePhone());
|
newAddressModel.setRelaName(orderModel.getNickName());
|
addressModel.setMobilePhone(orderModel.getMobilePhone());
|
dao.insertUserAddress(addressModel);
|
return addressModel;
|
}
|
|
private UserAddressModel updateUserAddressTwo(UserAddressModel addressModel){
|
//添加地址
|
UserAddressModel model = new UserAddressModel();
|
addressModel.setMobilePhone(addressModel.getMobilePhone());
|
addressModel.setUserId(addressModel.getUserId());
|
addressModel.setFlag("0");
|
dao.updateUserAddress(addressModel);
|
addressModel.setFlag("1");
|
dao.updateUserAddress(addressModel);
|
|
return addressModel;
|
}
|
@Transactional(rollbackFor = {})
|
public void delCuserById(String id, String phone, String userType){
|
|
UserAccountModel account = cityPartnerService.queryPartnerAccountByUserId(id);
|
if(null==account.getOverdraftLimit()&&"".equals(account.getOverdraftLimit())){
|
account.setOverdraftLimit("0");
|
}
|
BigDecimal overLimit = new BigDecimal(account.getOverdraftLimit());
|
//要把可用余额加入到合伙人
|
UserModel userModel1 = queryUserOtherByIdC(id);
|
if(null!=userModel1){
|
if(overLimit.compareTo(BigDecimal.ZERO)==1){
|
|
|
if(null!=userModel1.getPartnerId()){
|
//调整额度时需要扣除合伙人额度
|
String partnerId = userModel1.getPartnerId();
|
XzxCityPartner partner = cityPartnerService.queryById(partnerId);
|
UserAccountModel partnerAccount = cityPartnerService.queryPartnerAccountByUserId(partner.getUserId());
|
PartnerAccountModel partnerAccountModel = cityPartnerService.getPartnerAccountByUserId(partner.getUserId());
|
Snowflake snowflake = IdUtil.getSnowflake(0, 3);
|
String payOrderId = "ZF"+snowflake.nextIdStr();
|
partnerAccount.setAddType("1");
|
cityPartnerService.insertPartnerAccountLog(partnerAccount,"8",overLimit,payOrderId,"7");
|
BigDecimal newPartnerMoney = new BigDecimal(partnerAccount.getMoney()).add(overLimit);
|
partnerAccount.setMoney(newPartnerMoney.doubleValue());
|
//partnerAccountModel.setMoney(DoubleUtil.roundTwo(newPartnerMoney.toString()));
|
partnerAccountModel.setHbb(DoubleUtil.roundTwo(newPartnerMoney.toString()));
|
cityPartnerService.updateAccountPartner(partnerAccount);
|
cityPartnerService.updatePartnerAccount(partnerAccountModel);
|
}
|
}
|
}
|
// 删除user_info
|
dao.delCuserById(id, "xzx_user_other_info");
|
// 删除account
|
dao.delCuserAccountById(id);
|
if(userType.equals("普通用户")){
|
// 删除地址
|
dao.delUserAddress(id, phone);
|
}
|
// 删除redis token
|
UserModel userModel = dao.queryUserByUsertype(phone, "1", "0", "xzx_user_info",null,null);
|
// redisService.removeToken(userModel.getUserId());
|
redisService.remove("xzx:user:token:"+id);
|
if(null!=userModel){
|
redisService.remove("xzx:user:token:"+userModel.getUserId());
|
}
|
|
List<Map<String, Object>> userIdList = dao.queryCuserByPhoneRedisDelList(phone);
|
for (Map<String,Object> map:userIdList) {
|
String userId = map.get("userId").toString();
|
redisService.remove("xzx:user:token:"+userId);
|
}
|
redisService.remove(phone);
|
}
|
|
/**
|
* 添加角色
|
* @param phone
|
* @param userType
|
* @return
|
*/
|
/* @Transactional(rollbackFor = {})
|
public int (String phone, String userType,String password,String area,String name){
|
// 判断此用户类型是否addCuserRole已经删除过,如果已经删除了需要重新恢复
|
String[] type =userType.split("_");
|
UserModel userModels = dao.queryUserByUsertype1(phone, type[0], "1", "xzx_user_other_info",null,null);
|
Snowflake snowflake = IdUtil.getSnowflake(1, 3);
|
String id="USER"+snowflake.nextIdStr();
|
String partnerId = dao.queryPartnerId(area);
|
//userEditroleModel.setPartnerId(partnerId);
|
|
if(userModels == null){
|
// 添加角色需要添加到2个表,一个是用户表,一个是账号表
|
// 一个账号不能有相同的角色
|
if(dao.queryUserByUsertype1(phone, type[0], "0", "xzx_user_other_info",null,null) != null){
|
return 0;
|
}
|
// 插入用户表
|
dao.addCuserRole(id, phone, type[0], sdf.format(new Date()), "xzx_user_other_info");
|
String salt =DateUtil.getRandomNickname(16);
|
String pass = DateUtil.encrypt(salt,password);
|
dao.updateDelflag(phone,type[0], type[1],name, "xzx_user_other_info",pass,salt,area,partnerId);
|
System.out.println("userOtherInfoId==="+id);
|
}else{
|
String salt =DateUtil.getRandomNickname(16);
|
String pass = DateUtil.encrypt(salt,password);
|
dao.updateDelflag(phone, type[0],type[1],name, "xzx_user_other_info",pass,salt,area,partnerId);
|
}
|
// 查询主键
|
UserModel u = dao.queryUserByUsertype1(phone, type[0], "0", "xzx_user_other_info",null,null);
|
// 添加账号表
|
id="ZH"+snowflake.nextIdStr();
|
dao.addCuserAccountRole(id, phone, u.getUserId(),"0");
|
// 删除redis 缓存
|
// redis为map, key为user id, 先根据手机号码查询所有id, 进行遍历删除
|
UserModel userModel = dao.queryUserByUsertype(phone, "1", "0", "xzx_user_info",null,null);
|
// redisService.removeToken(userModel.getUserId());
|
redisService.remove("xzx:user:token:"+userModel.getUserId());
|
redisService.remove("xzx:user:token:"+id);
|
List<Map<String, Object>> userIds = dao.queryCuserByPhoneRedisDelList(phone);
|
for (Map<String,Object> map:userIds) {
|
String userId = map.get("userId").toString();
|
redisService.remove("xzx:user:token:"+userId);
|
}
|
redisService.remove(phone);
|
return 1;
|
}*/
|
|
|
/**
|
* 推送给安卓
|
*/
|
private String sendByAnroid(String alert, String title, Map<String,String> extras, Audience audience,String appKey,String secret){
|
|
Map<String,Object> map=new HashMap<>();
|
map.put("alert",alert);
|
map.put("title",title);
|
map.put("extras",extras);
|
map.put("audience",audience);
|
try {
|
PushPayload tag1 = PushPayload.newBuilder()
|
.setPlatform(Platform.android())
|
.setAudience(audience)
|
.setNotification(Notification.android(alert, title, extras))
|
.build();
|
JPushClient jpushClient = new JPushClient(secret, appKey, null, ClientConfig.getInstance());
|
//JPushClient jPushClient = Singleton.get(JPushClient.class);
|
jpushClient.sendPush(tag1);
|
log.info("极光推送成功:{}", JSONUtil.toJsonPrettyStr(map));
|
return null;
|
} catch (APIConnectionException | APIRequestException e) {
|
log.error("极光推送失败:内容【"+JSONUtil.toJsonPrettyStr(map) +"】",e);
|
return e.getMessage();
|
}
|
}
|
/**
|
* 修改角色
|
* @param phone
|
* @param userType
|
* @return
|
*/
|
@Transactional(rollbackFor = {})
|
public int updateCuserRole(String phone, String userType,String password,String area,String name,String cityId,String storageId){
|
// 判断此用户类型是否已经删除过,如果已经删除了需要重新恢复
|
String[] type =userType.split("_");
|
UserModel userModels = dao.queryUserOldUserType(phone, type[0], "xzx_user_other_info");
|
Snowflake snowflake = IdUtil.getSnowflake(1, 3);
|
String id="USER"+snowflake.nextIdStr();
|
String salt =DateUtil.getRandomNickname(16);
|
String pass = DateUtil.encrypt(salt,password);
|
String partnerId = dao.queryPartnerId(area);
|
//userEditroleModel.setPartnerId(partnerId);
|
if(type.equals("4")){
|
dao.updateDelflag(phone, type[0],type[1],name, "xzx_user_other_info",pass,salt,area,partnerId,cityId,storageId);
|
|
}else{
|
dao.updateDelflag(phone, type[0],type[1],name, "xzx_user_other_info",pass,salt,area,partnerId,cityId,null);
|
|
}
|
// 查询主键
|
UserModel u = dao.queryUserByUsertype1(phone, type[0], "0", "xzx_user_other_info",null,null);
|
// 添加账号表
|
id="ZH"+snowflake.nextIdStr();
|
dao.addCuserAccountRole(id, phone, u.getUserId(),"0");
|
// 删除redis 缓存
|
// redis为map, key为user id, 先根据手机号码查询所有id, 进行遍历删除
|
UserModel userModel = dao.queryUserByUsertype(phone, "1", "0", "xzx_user_info",null,null);
|
// redisService.removeToken(userModel.getUserId());
|
redisService.remove("xzx:user:token:"+userModel.getUserId());
|
redisService.remove("xzx:user:token:"+id);
|
List<Map<String, Object>> userIds = dao.queryCuserByPhoneRedisDelList(phone);
|
for (Map<String,Object> map:userIds) {
|
String userId = map.get("userId").toString();
|
redisService.remove("xzx:user:token:"+userId);
|
}
|
redisService.remove(phone);
|
return 1;
|
}
|
|
public int queryUserByPhone(String phone){
|
UserModel userModel = dao.queryUserByUsertype(phone, "1", "0", "xzx_user_info",null,null);
|
if(null!=userModel){
|
return 1;
|
}else{
|
return 0;
|
}
|
}
|
|
public UserAddressModel queryUserAddressInfo(String userId,String mobilePhone){
|
UserAddressModel addressModel = dao.queryUserAddressInfo(userId,mobilePhone);
|
return addressModel;
|
}
|
public List<UserModel> queryUserByPhoneNormal(String phone,String normal){
|
String nickName="";
|
if(!StringUtils.isEmpty(phone)){
|
try {
|
nickName = new String(base64.decode(phone), "UTF-8");
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
|
List<UserModel> userModel = dao.queryUserByUsertypeList(phone, "1", "0", "xzx_user_info",normal,nickName);
|
return userModel;
|
}
|
/**
|
* 查询所有角色
|
* @return
|
*/
|
public List<Map<String, Object>> queryAllRole(){
|
return dao.queryAllRole();
|
}
|
|
public List<Map<String, Object>> queryAllAPPRole(){
|
return dao.queryAllAPPRole();
|
}
|
|
public List<Map<String, Object>> querySysStrangeList(){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
List<String> townIds = cityPartnerService.queryTownIdsByPartnerIdList(partnerIds);
|
List<Map<String, Object>> list = dao.querySysStrangeList(townIds);
|
return list;
|
}else{
|
List<Map<String, Object>> list = dao.querySysStrangeList(null);
|
return list;
|
}
|
}
|
|
|
/**
|
* C端用户导出
|
* @param userType
|
* @param name
|
* @param phone
|
*/
|
public void exportCuser(String userType, String name, String phone, HttpServletResponse response){
|
if(!StringUtils.isEmpty(name)){
|
name = new String(Base64.encodeBase64(name.getBytes()));
|
}
|
int count = dao.queryCuserListCount(userType, name, phone);
|
// 当总数大于60000条需分多次导出
|
int size = 60000;
|
int exportNum = count > size ? count / size + 1 : 1;
|
for(int i = 0; i < exportNum; i++){
|
List<UserModel> maps = dao.queryCuserList(userType, name, phone, i * size, size);
|
cuserService(maps, response);
|
}
|
}
|
|
void cuserService(List<UserModel> maps, HttpServletResponse response){
|
Map<String, List<String>> map = new HashMap<>();
|
String[] strArray = { "用户id", "角色", "昵称", "手机号码" };
|
for(UserModel m : maps){
|
List<String> list = new ArrayList<>();
|
list.add(m.getUserId());
|
list.add(m.getUserType());
|
list.add(new String(Base64.decodeBase64(m.getNickName().getBytes())) + "");
|
list.add(m.getMobilePhone());
|
map.put( m.getUserId(), list);
|
}
|
HSSFWorkbook wbb = FileExportUtil.createExcel(map, strArray, exportPaht+ UUID.randomUUID().toString().replace("-", ""));
|
try{
|
FileExportUtil.setResponseInfo(response, wbb, UUID.randomUUID().toString().replace("-", ""));
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 通过用户的ID更新name
|
* @param userId
|
* @param name
|
*/
|
|
public int updateUserName(String userId, String name, String mobile){
|
|
return dao.updateUserName(userId, name, mobile);
|
}
|
|
public void updateOtherUserById(String partnerId){
|
dao.updateOtherUserById1(partnerId);
|
}
|
public int updateUserNameApi(String userId, String name, String mobile,String type){
|
if(null!=type&&!"".equals(type)){
|
if(type!="1"){
|
int num = dao.updateOtherUserName(userId, name, mobile);
|
}
|
}
|
return dao.updateUserName(userId, name, mobile);
|
}
|
|
public int updatePromoterName(String userId, String name, String mobile){
|
return dao.updatePromoterName(userId, name, mobile);
|
}
|
|
public Map<String, Object> queryStorageList(UserModel userModel){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
userModel.setPartnerIds(partnerIds);
|
|
int pa = userModel.getPage();
|
pa = (pa - 1) * userModel.getLimit();
|
userModel.setPage(pa);
|
String nickName=null;
|
if(!StringUtils.isEmpty(userModel.getName())){
|
//nickName = new String(Base64.encodeBase64(nickName.getBytes()));
|
//userModel.setNickName(nickName);
|
userModel.setName(userModel.getName());
|
userModel.setMobilePhone(userModel.getName());
|
}
|
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";
|
}
|
|
userModel.setStartTime(startTime);
|
userModel.setEndTime(endTime);
|
int storageNum=dao.queryStorageNum(partnerIds);
|
Map<String, Object> result = new HashMap<>();
|
List<Map<String,Object>> storageList = dao.queryStorageList(userModel);
|
for (Map<String,Object> map:storageList) {
|
map.put("recycleweight",DoubleUtil.roundThree(map.get("recycleweight").toString()) );
|
map.put("storageweight",DoubleUtil.roundThree(map.get("storageweight").toString()));
|
map.put("recyclemoney",DoubleUtil.roundTwo(map.get("recyclemoney").toString()));
|
map.put("storagemoney",DoubleUtil.roundTwo(map.get("storagemoney").toString()));
|
String orderId = map.get("orderid").toString();
|
String[] orderIds = orderId.split(",");
|
map.put("orderNum",orderIds.length);
|
}
|
int count = dao.queryStorageCount(userModel).size();
|
result.put("storageNum",storageNum);
|
result.put("data", storageList);
|
result.put("count", count);
|
result.put("code", 0);
|
return result;
|
}
|
|
public Map<String, Object> queryPackageStorageList(UserModel userModel){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
userModel.setPartnerIds(partnerIds);
|
List<String> townIds = new ArrayList<>();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
String partnerId= partnerIds.get(0);
|
townIds = cityPartnerService.queryTownIdsByPartnerId(partnerId);
|
//storageModel.setTownIds(townIds);
|
}
|
int pa = userModel.getPage();
|
pa = (pa - 1) * userModel.getLimit();
|
userModel.setPage(pa);
|
String nickName=null;
|
if(!StringUtils.isEmpty(userModel.getName())){
|
//nickName = new String(Base64.encodeBase64(nickName.getBytes()));
|
//userModel.setNickName(nickName);
|
userModel.setName(userModel.getName());
|
userModel.setMobilePhone(userModel.getName());
|
}
|
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";
|
}
|
|
userModel.setStartTime(startTime);
|
userModel.setEndTime(endTime);
|
int storageNum=dao.queryPackageStorageNum(townIds);
|
Map<String, Object> result = new HashMap<>();
|
userModel.setUserType("7");
|
List<Map<String,Object>> storageList = dao.queryStorageList1(userModel);
|
for (Map<String,Object> map:storageList) {
|
map.put("recycleweight",DoubleUtil.roundThree(map.get("recycleweight").toString()) );
|
map.put("storageweight",DoubleUtil.roundThree(map.get("storageweight").toString()));
|
map.put("recyclemoney",DoubleUtil.roundTwo(map.get("recyclemoney").toString()));
|
map.put("storagemoney",DoubleUtil.roundTwo(map.get("storagemoney").toString()));
|
String orderId = map.get("orderid").toString();
|
String[] orderIds = orderId.split(",");
|
map.put("orderNum",orderIds.length);
|
}
|
int count = 0 ;
|
if(storageList.size()==0){
|
if(storageNum>0){
|
storageList = dao.queryStorageList1(userModel);
|
for (Map<String,Object> map:storageList) {
|
|
map.put("orderNum",0);
|
}
|
count=storageNum;
|
}
|
}else{
|
count = dao.queryStorageCount1(userModel).size();
|
}
|
|
result.put("storageNum",storageNum);
|
result.put("data", storageList);
|
result.put("count", count);
|
result.put("code", 0);
|
return result;
|
}
|
public Map<String, Object> queryCollectorList(PromoterModel promoterModel){
|
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
promoterModel.setPartnerIds(partnerIds);
|
int pa = promoterModel.getPage();
|
pa = (pa - 1) * promoterModel.getLimit();
|
promoterModel.setPage(pa);
|
|
Map<String, Object> result = new HashMap<>();
|
//查询回收员总数
|
List<String> collectorNum = dao.queryCollectorNum(partnerIds);
|
if(collectorNum.size()==0){
|
result.put("collectorNum",collectorNum.size());
|
result.put("storageWeight","0");
|
result.put("weightError","0");
|
result.put("storageMoney","0");
|
result.put("moneyError","0");
|
result.put("data",new ArrayList<UserModel>());
|
result.put("count", 0);
|
result.put("code", 0);
|
return result;
|
}
|
Map<String,Object> totalWeightAndMoney =dao.totalWeightAndMoney(null,partnerIds);
|
String paramName = promoterModel.getParamName();
|
if(null!=paramName&&!"".equals(paramName)){
|
if(DateUtil.isBase64(paramName)){
|
promoterModel.setNickName(new String(Base64.encodeBase64(paramName.getBytes())));
|
} else{
|
promoterModel.setMobilePhone(paramName);
|
promoterModel.setName(paramName);
|
}
|
}
|
String startTime = promoterModel.getStartTime();
|
String endTime = promoterModel.getEndTime();
|
if(null!=startTime&&!"".equals(startTime)){
|
startTime = startTime+" 00:00:00";
|
}
|
if(null!=endTime&&!"".equals(endTime)){
|
endTime = endTime+" 23:59:59";
|
}
|
promoterModel.setStartTime(startTime);
|
promoterModel.setEndTime(endTime);
|
List<UserModel> map = dao.queryCollectorPageList(promoterModel);
|
int count = dao.queryCollectorPageCount(promoterModel).size();
|
for (UserModel model:map) {
|
BigDecimal storageWeight = new BigDecimal(model.getStorageWeight()).divide(new BigDecimal("1000"),3, BigDecimal.ROUND_CEILING);
|
BigDecimal recycleWeight = new BigDecimal(model.getRecycleWeight()).divide(new BigDecimal("1000"),3, BigDecimal.ROUND_CEILING);
|
BigDecimal weightError = new BigDecimal(model.getWeightError()).divide(new BigDecimal("1000"),3, BigDecimal.ROUND_CEILING);
|
|
BigDecimal storageMoney = new BigDecimal(model.getStorageMoney()).divide(new BigDecimal("10000"),2, BigDecimal.ROUND_CEILING);
|
BigDecimal recycleMoney = new BigDecimal(model.getRecycleMoney()).divide(new BigDecimal("10000"),2, BigDecimal.ROUND_CEILING);
|
BigDecimal moneyError = new BigDecimal(model.getMoneyError()).divide(new BigDecimal("10000"),2, BigDecimal.ROUND_CEILING);
|
|
model.setStorageWeight(DoubleUtil.roundThree(storageWeight.toString()));
|
model.setStorageMoney(DoubleUtil.roundTwo(storageMoney.toString()));
|
model.setRecycleWeight(DoubleUtil.roundThree(recycleWeight.toString()));
|
model.setRecycleMoney(DoubleUtil.roundTwo(recycleMoney.toString()));
|
model.setWeightError(DoubleUtil.roundThree(weightError.toString()));
|
model.setMoneyError(DoubleUtil.roundTwo(moneyError.toString()));
|
|
int orderNum=0;
|
List<String> orderIds = dao.queryUserOrderNum(model.getUserId(),partnerIds,startTime,endTime);
|
model.setOrderNum(orderIds.size());
|
}
|
//累计重量误差
|
BigDecimal weightError = new BigDecimal(totalWeightAndMoney.get("storageweight").toString()).subtract(new BigDecimal(totalWeightAndMoney.get("recycleweight").toString()));
|
weightError = weightError.divide(new BigDecimal("1000"),3);
|
//累计金额误差
|
BigDecimal moneyError = new BigDecimal(totalWeightAndMoney.get("storagemoney").toString()).subtract(new BigDecimal(totalWeightAndMoney.get("recyclemoney").toString()));
|
moneyError = moneyError.divide(new BigDecimal("10000"),2);
|
|
BigDecimal totalWeight = new BigDecimal(totalWeightAndMoney.get("storageweight").toString()).divide(new BigDecimal("1000"));
|
BigDecimal totalMoney = new BigDecimal(totalWeightAndMoney.get("storagemoney").toString()).divide(new BigDecimal("10000"));
|
|
result.put("collectorNum",collectorNum.size());
|
result.put("storageWeight",DoubleUtil.roundThree(totalWeight.toString()));
|
result.put("weightError",DoubleUtil.roundThree(weightError.toString()));
|
result.put("storageMoney",DoubleUtil.roundTwo(totalMoney.toString()));
|
result.put("moneyError",DoubleUtil.roundTwo(moneyError.toString()));
|
result.put("data", map);
|
result.put("count", count);
|
result.put("code", 0);
|
return result;
|
}
|
/**
|
* 查询推广员的信息
|
* @param promoterModel
|
* @return
|
*/
|
public Map<String, Object> queryQromoterList(PromoterModel promoterModel){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
promoterModel.setPartnerIds(partnerIds);
|
int pa = promoterModel.getPage();
|
pa = (pa - 1) * promoterModel.getLimit();
|
promoterModel.setPage(pa);
|
if(!StringUtils.isEmpty(promoterModel.getNickName())){
|
promoterModel.setNickName(new String(Base64.encodeBase64(promoterModel.getNickName().getBytes())));
|
}
|
String startTime = promoterModel.getStartTime();
|
String endTime = promoterModel.getEndTime();
|
if(null!=startTime&&!"".equals(startTime)){
|
startTime = startTime+ " 00:00:00";
|
promoterModel.setStartTime(startTime);
|
}
|
if(null!=endTime&&!"".equals(endTime)){
|
endTime = endTime+ " 23:59:59";
|
promoterModel.setEndTime(endTime);
|
}
|
int count = dao.queryQromoterListCount(promoterModel);
|
// 查询订单数据
|
Long beginTime2 = new Date().getTime();
|
System.out.println("333333333333"+beginTime2);
|
List<PromoterModel> list = dao.queryQromoterLeven(promoterModel);
|
Long totalConsumedTime2=new Date().getTime()-beginTime2;
|
System.out.println("333333333333"+totalConsumedTime2);
|
|
for(PromoterModel p : list) {
|
p.setTurnoverRate("0");
|
// 未注册总数
|
if(null!=p.getUnregistCount()){
|
p.setUnregistCount(p.getUnregistCount());
|
}
|
// 已注册总数
|
if(null!=p.getRegistCount()){
|
p.setRegistCount(String.valueOf(Integer.parseInt(p.getRegistCount())+Integer.parseInt(p.getCount())));
|
}else{
|
p.setRegistCount(p.getRegistCount());
|
}
|
// 已成交总数
|
if(null!=p.getCount()){
|
p.setOrderCount(p.getCount());
|
}
|
|
if(null!=p.getRegistCount()){
|
if(null!=p.getOrderCount()){
|
if(p.getOrderCount().equals("0")){
|
p.setTurnoverRate("0"+"%");
|
}else{
|
BigDecimal turnoverRate = new BigDecimal(p.getOrderCount()).divide(new BigDecimal(p.getRegistCount()),3,BigDecimal.ROUND_DOWN);
|
p.setTurnoverRate(turnoverRate.multiply(new BigDecimal("100")).toString()+"%");
|
}
|
|
}else{
|
p.setOrderCount("0");
|
p.setTurnoverRate("0"+"%");
|
}
|
|
}else{
|
p.setOrderCount("0");
|
p.setRegistCount("0");
|
}
|
PromoterModel pmx = dao.queryPromoterOrderWeightMoney(p.getUserId(),promoterModel.getStartTime(),promoterModel.getEndTime());
|
if(null!=pmx.getOrderWeightCount()){
|
p.setOrderWeightCount(DoubleUtil.roundThree(pmx.getOrderWeightCount()));
|
}else{
|
p.setOrderWeightCount("0");
|
}
|
|
if(null!=pmx.getOrderMoneyCount()){
|
p.setOrderMoneyCount(DoubleUtil.roundTwo(pmx.getOrderMoneyCount()));
|
}else{
|
p.setOrderMoneyCount("0");
|
}
|
int allOrderNum = dao.queryAllOrderByUserId(p.getUserId(),promoterModel.getStartTime(),promoterModel.getEndTime());
|
p.setAllOrderNum(allOrderNum);
|
|
}
|
Map<String, Object> m = new HashMap<>();
|
m.put("data", list);
|
m.put("count", count);
|
m.put("code", 0);
|
return m;
|
}
|
|
/**
|
* 推广员查看页
|
* @param userId
|
* @param phone
|
* @param userType
|
* @return
|
*/
|
public Map<String, Object> queryPromoterDetail(String userId, String phone, String userType){
|
Map<String, Object> m = new HashMap<>();
|
// 查询用户信息
|
m.put("user", dao.queryCuserDetail(phone, userType, "xzx_user_other_info"));
|
PromoterModel promoterModel = new PromoterModel();
|
promoterModel.setUserId(userId);
|
List<PromoterModel> list = dao.queryQromoterLeven(promoterModel);
|
Map<String, Object> mx = new HashMap<>();
|
mx.put("regsterCount", 0);
|
mx.put("unregsterCount", 0);
|
mx.put("orderCount", 0);
|
|
for (PromoterModel pm : list) {
|
|
// 未注册总数
|
mx.put("unregsterCount", pm.getUnregistCount());
|
|
// 已注册总数
|
mx.put("regsterCount", Integer.parseInt(pm.getRegistCount()) + Integer.parseInt(pm.getCount()));
|
|
// 已成交总数
|
mx.put("orderCount", Integer.parseInt(pm.getCount()));
|
|
}
|
m.put("count", mx);
|
return m;
|
}
|
|
/**
|
* 推广员详情里面的总数
|
* @param userId
|
* @param startTime
|
* @param endTime
|
* @returnS
|
*/
|
public Map<String, Object> queryxxxx(String userId, String startTime, String endTime){
|
Map<String, Object> map = dao.queryPromoterOrderCount(userId, startTime, endTime);
|
int count = dao.queryPromoterRegiterTimeCount(userId, startTime, endTime, "xzx_user_other_info");
|
map.put("count", count);
|
return map;
|
}
|
|
/**
|
* 根据用户ID和手机号码查询账号信息
|
* @param userId
|
* @param phone
|
*/
|
public UserAccountModel queryAccountInfo(String userId, String phone){
|
return dao.queryAccountInfo(userId, phone);
|
}
|
|
public UserModel queryRecoveryById(String userId,String userType){
|
return dao.queryRecoveryById(userId,userType);
|
}
|
public List<Map<String,Object>> queryCuserListByName(String userId){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
return dao.queryCuserListByName(userId,partnerIds);
|
}
|
|
|
public Map<String,Object> querySysStorageList(StorageModel storageModel) {
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
String partnerId = partnerIds.get(0);
|
List<String> townIds = cityPartnerService.queryTownIdsByPartnerId(partnerId);
|
storageModel.setTownIds(townIds);
|
}
|
int pa = storageModel.getPage();
|
pa = (pa - 1) * storageModel.getLimit();
|
storageModel.setPage(pa);
|
Map<String,Object> result = new HashMap<>();
|
List<Map<String,Object>> list = dao.querySysStorageList(storageModel);
|
BigDecimal allWeight = new BigDecimal("0");
|
BigDecimal allMoney = new BigDecimal("0");
|
//相隔的天数 ,查询日均
|
int dayNum = dao.queryDayDiff(storageModel);
|
for (Map<String,Object> map:list) {
|
StorageModel pModel = new StorageModel();
|
String id = map.get("id").toString();
|
pModel.setSysStorageId(id);
|
pModel.setStartTime(storageModel.getStartTime());
|
pModel.setEndTime(storageModel.getEndTime());
|
pModel.setPartnerIds(partnerIds);
|
Map<String,Object> rMap = dao.querySysStorageAll(pModel);
|
List<String> allOrderNumBySsId= dao.sysStorageOrderNum(pModel);
|
BigDecimal allOrderNum = new BigDecimal("0") ;
|
for (String orderIds:allOrderNumBySsId) {
|
String[] ossid = orderIds.split(",");
|
allOrderNum = allOrderNum.add(new BigDecimal(ossid.length));
|
}
|
map.put("orderNum",allOrderNum);
|
if(null!=rMap){
|
allWeight = allWeight.add(new BigDecimal(rMap.get("storageweight").toString()));
|
allMoney =allMoney.add(new BigDecimal(rMap.get("storagemoney").toString()));
|
BigDecimal storageWeight = new BigDecimal(rMap.get("storageweight").toString());
|
storageWeight = storageWeight.divide(new BigDecimal("1000"),3,RoundingMode.HALF_UP);
|
BigDecimal storageMoney = new BigDecimal(rMap.get("storagemoney").toString());
|
storageMoney = storageMoney.divide(new BigDecimal("10000"),2,RoundingMode.HALF_UP);
|
BigDecimal recycleweight = new BigDecimal(rMap.get("recycleweight").toString());
|
recycleweight = recycleweight.divide(new BigDecimal("1000"),3,RoundingMode.HALF_UP);
|
BigDecimal recyclemoney = new BigDecimal(rMap.get("recyclemoney").toString());
|
recyclemoney = recyclemoney.divide(new BigDecimal("10000"),2,RoundingMode.HALF_UP);
|
map.put("storageWeight",DoubleUtil.roundThree(storageWeight.toString()));
|
map.put("storageMoney",DoubleUtil.roundTwo(storageMoney.toString()));
|
map.put("recycleWeight",DoubleUtil.roundThree(recycleweight.toString()));
|
map.put("recycleMoney",DoubleUtil.roundTwo(recyclemoney.toString()));
|
//日均重量
|
BigDecimal sw = new BigDecimal(rMap.get("storageweight").toString());
|
if(dayNum>0){
|
BigDecimal dayw = sw.divide(new BigDecimal(dayNum),3, RoundingMode.HALF_UP);
|
map.put("dayStorageWeight",dayw.divide(new BigDecimal("1000"),3,RoundingMode.HALF_UP));
|
}else{
|
sw =sw.divide(new BigDecimal("1000"),3,RoundingMode.HALF_UP);
|
map.put("dayStorageWeight",DoubleUtil.roundThree(sw.toString()));
|
}
|
//日均金额
|
BigDecimal sm = new BigDecimal(rMap.get("storagemoney").toString());
|
if(dayNum>0){
|
BigDecimal daym = sm.divide(new BigDecimal(dayNum),2,RoundingMode.HALF_UP);
|
map.put("dayStorageMoney",daym.divide(new BigDecimal("10000"),2,RoundingMode.HALF_UP));
|
}else{
|
map.put("dayStorageMoney",sm.divide(new BigDecimal("10000"),2,RoundingMode.HALF_UP));
|
}
|
|
}
|
}
|
if(dayNum==0){
|
dayNum=1;
|
}
|
BigDecimal alldayw = allWeight.divide(new BigDecimal(dayNum),3,RoundingMode.HALF_UP);
|
BigDecimal alldaym = allMoney.divide(new BigDecimal(dayNum),2,RoundingMode.HALF_UP);
|
allWeight = allWeight.divide(new BigDecimal("1000"),3,RoundingMode.HALF_UP);
|
alldayw = alldayw.divide(new BigDecimal("1000"),3,RoundingMode.HALF_UP);
|
alldaym = alldaym.divide(new BigDecimal("10000"),2,RoundingMode.HALF_UP);
|
allMoney = allMoney.divide(new BigDecimal("10000"),2,RoundingMode.HALF_UP);
|
int count = dao.querySysStorageCount(storageModel);
|
result.put("count",count);
|
result.put("code",0);
|
result.put("data",list);
|
result.put("allWeight",DoubleUtil.roundThree(allWeight.toString()));
|
result.put("allMoney",DoubleUtil.roundTwo(allMoney.toString()));
|
result.put("allDayWeight",DoubleUtil.roundThree(alldayw.toString()));
|
result.put("allDayMoney",DoubleUtil.roundTwo(alldaym.toString()));
|
return result;
|
}
|
public Map<String,Object> queryStorageObjectList(StorageModel storageModel) {
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
int pa = storageModel.getPage();
|
pa = (pa - 1) * storageModel.getLimit();
|
storageModel.setPage(pa);
|
storageModel.setPartnerIds(partnerIds);
|
Map<String,Object> result = new HashMap<>();
|
List<Map<String,Object>> list = dao.queryStorageObjectList(storageModel);
|
for (Map<String,Object> map:list) {
|
map.put("storageweight",DoubleUtil.roundThree(map.get("storageweight").toString()));
|
map.put("storagemoney",DoubleUtil.roundTwo(map.get("storagemoney").toString()));
|
map.put("recycleweight",DoubleUtil.roundThree(map.get("recycleweight").toString()));
|
map.put("recyclemoney",DoubleUtil.roundTwo(map.get("recyclemoney").toString()));
|
}
|
int count = dao.queryStorageObjectCount(storageModel).size();
|
result.put("count",count);
|
result.put("code",0);
|
result.put("data",list);
|
return result;
|
}
|
|
public Map<String,Object> queryStorageByUserId(StorageModel storageModel) {
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
int pa = storageModel.getPage();
|
pa = (pa - 1) * storageModel.getLimit();
|
storageModel.setPage(pa);
|
if(null!=storageModel.getStartTime()&&!"".equals(storageModel.getStartTime())){
|
storageModel.setStartTime(storageModel.getStartTime()+" 00:00:00");
|
}
|
if(null!=storageModel.getEndTime()&&!"".equals(storageModel.getEndTime())){
|
storageModel.setEndTime(storageModel.getEndTime()+" 23:59:59");
|
}
|
storageModel.setPartnerIds(partnerIds);
|
List<StorageModel> list = dao.queryStorageByUserId(storageModel);
|
for (StorageModel model:list) {
|
if(null!=model.getRecycleWeight()&&!"".equals(model.getRecycleWeight())){
|
model.setRecycleWeight(DoubleUtil.roundThree(model.getRecycleWeight()));
|
}
|
if(null!=model.getRecycleMoney()&&!"".equals(model.getRecycleMoney())){
|
model.setRecycleMoney(DoubleUtil.roundTwo(model.getRecycleMoney()));
|
}
|
model.setWeightError(DoubleUtil.roundThree(model.getWeightError()));
|
model.setMoneyError(DoubleUtil.roundTwo(model.getMoneyError()));
|
}
|
int count = dao.queryStorageByUserIdCount(storageModel);
|
Map<String,Object> result = new HashMap<>();
|
result.put("data", list);
|
result.put("count", count);
|
result.put("code", 0);
|
return result;
|
}
|
|
/**
|
* 仓库数据统计
|
* @param storageModel
|
* @return
|
*/
|
public Map<String,Object> querySysStorageDetail(StorageModel storageModel) {
|
Map<String,Object> result = new HashMap<>();
|
List<Map<String,String>> weekOrMonthList = new ArrayList<>();
|
List<Map<String,String>> weekOrMonthImgList = new ArrayList<>();
|
//相隔天数
|
int dayNum = dao.queryDayDiff(storageModel);
|
Map<String,Object> allRMap = dao.querySysStorageAll(storageModel);
|
|
BigDecimal allWeight = new BigDecimal(allRMap.get("storageweight").toString());
|
BigDecimal allMoney = new BigDecimal(allRMap.get("storagemoney").toString());
|
BigDecimal alldayw = new BigDecimal("0");
|
BigDecimal alldaym = new BigDecimal("0");
|
|
if(dayNum>0){
|
alldayw = allWeight.divide(new BigDecimal(dayNum),2,RoundingMode.HALF_UP);
|
alldaym = allMoney.divide(new BigDecimal(dayNum),2,RoundingMode.HALF_UP);
|
}
|
|
result.put("allWeight",DoubleUtil.roundThree(allWeight.toString()));
|
result.put("allMoney",DoubleUtil.roundTwo(allMoney.toString()));
|
result.put("alldayw",DoubleUtil.roundThree(alldayw.toString()));
|
result.put("alldaym",DoubleUtil.roundTwo(alldaym.toString()));
|
|
List<Map<String,Object>> weekOrderList = new ArrayList<>();
|
List<Map<String,Object>> weekMoneyAndWeightList = new ArrayList<>();
|
List<Map<String,Object>> detailImage = new ArrayList<>();
|
if(null!=storageModel.getTimeType()&&!"".equals(storageModel.getTimeType())){
|
if(storageModel.getTimeType().equals("week")){
|
weekOrMonthList = DateUtil.query12WeekStartTimeAndEndTime();
|
}else{
|
weekOrMonthList = DateUtil.query12MonthStartTimeAndEndTime();
|
}
|
for (Map<String,String> map:weekOrMonthList) {
|
String startTime = map.get("startTime");
|
String endTime = map.get("endTime");
|
if(map.get("storageweight")!=null){
|
String storageweight = DoubleUtil.roundThree(map.get("storageweight"));
|
map.put("storageweight",storageweight);
|
}
|
if(map.get("recycleweight")!=null){
|
String recycleweight = DoubleUtil.roundThree(map.get("recycleweight"));
|
map.put("recycleweight",recycleweight);
|
}
|
|
|
|
//周订单数
|
weekOrderList = getWeekOrderList(startTime,endTime,storageModel.getSysStorageId(),weekOrderList);
|
//周金额(入库金额,订单金额,入库重量,订单重量)
|
weekMoneyAndWeightList = getWeekMoneyAndWeightList(startTime,endTime,storageModel.getSysStorageId(),weekMoneyAndWeightList);
|
}
|
}else{
|
weekOrMonthList = DateUtil.query12WeekStartTimeAndEndTime();
|
for (Map<String,String> map:weekOrMonthList) {
|
String startTime = map.get("startTime");
|
String endTime = map.get("endTime");
|
if(map.get("storageweight")!=null){
|
String storageweight = DoubleUtil.roundThree(map.get("storageweight"));
|
map.put("storageweight",storageweight);
|
}
|
if(map.get("recycleweight")!=null){
|
String recycleweight = DoubleUtil.roundThree(map.get("recycleweight"));
|
map.put("recycleweight",recycleweight);
|
}
|
//周订单数
|
weekOrderList = getWeekOrderList(startTime,endTime,storageModel.getSysStorageId(),weekOrderList);
|
//周金额(入库金额,订单金额,入库重量,订单重量)
|
weekMoneyAndWeightList = getWeekMoneyAndWeightList(startTime,endTime,storageModel.getSysStorageId(),weekMoneyAndWeightList);
|
}
|
}
|
Map<String,String> lastMap = new HashMap<>();
|
if(null!=storageModel.getImageType()&&!"".equals(storageModel.getImageType())) {
|
if (storageModel.getImageType().equals("week")) {
|
weekOrMonthImgList = DateUtil.query12WeekStartTimeAndEndTime();
|
lastMap = weekOrMonthImgList.get(0);
|
} else {
|
weekOrMonthImgList = DateUtil.query12MonthStartTimeAndEndTime();
|
lastMap = weekOrMonthImgList.get(0);
|
}
|
}else{
|
weekOrMonthImgList = DateUtil.query12WeekStartTimeAndEndTime();
|
lastMap = weekOrMonthImgList.get(0);
|
}
|
detailImage = getSysStorageTypeName(storageModel.getSysStorageId(), lastMap.get("startTime"),lastMap.get("endTime"),null);
|
for (Map<String,Object> obj:weekMoneyAndWeightList) {
|
if(obj.get("storageweight")!=null){
|
String storageweight = DoubleUtil.roundThree(obj.get("storageweight").toString());
|
obj.put("storageweight",storageweight);
|
}
|
if(obj.get("recycleweight")!=null){
|
String recycleweight = DoubleUtil.roundThree(obj.get("recycleweight").toString());
|
obj.put("recycleweight",recycleweight);
|
}
|
}
|
result.put("weekOrMonthOrderList",weekOrderList);
|
result.put("weekOrMonthMoneyAndWeightList",weekMoneyAndWeightList);
|
result.put("detailImage",detailImage);
|
|
return result;
|
}
|
|
private List<Map<String,Object>> getSysStorageTypeName(String sysStorageId,String startTime,String endTime,String typeName){
|
List<Map<String,Object>> resultMap = new ArrayList<>();
|
StorageModel storageModel1 = new StorageModel();
|
storageModel1.setStartTime(startTime);
|
storageModel1.setEndTime(endTime);
|
storageModel1.setSysStorageId(sysStorageId);
|
List<String> orderIdBySysStorageId = dao.sysStorageOrderNum(storageModel1);
|
List<String> orderIds = new ArrayList<>();
|
for (String ids:orderIdBySysStorageId) {
|
String[] orderIdsTemp = ids.split(",");
|
for (String orderId:orderIdsTemp) {
|
orderIds.add(orderId);
|
}
|
}
|
List<Map<String,Object>> list = new ArrayList<>();
|
if(orderIds!=null&&orderIds.size()>0){
|
list = dao.getSysStorageTypeName(orderIds,null,null,typeName);
|
}
|
//总金额
|
BigDecimal totalMoney = new BigDecimal("0");
|
for (Map<String,Object> map:list) {
|
totalMoney = totalMoney.add(new BigDecimal(map.get("money").toString()));
|
}
|
//查询占比
|
for (Map<String,Object> map:list) {
|
BigDecimal rate = new BigDecimal(map.get("money").toString()).divide(totalMoney,2,RoundingMode.HALF_UP);
|
map.put("rate",rate.multiply(new BigDecimal("100")).toString()+"%");
|
map.put("weight",DoubleUtil.roundThree(map.get("weight").toString()));
|
map.put("money",DoubleUtil.roundTwo(map.get("money").toString()));
|
}
|
Map<String,Object> imageData = new HashMap<>();
|
|
imageData.put("totalMoney",DoubleUtil.roundTwo(totalMoney.toString()));
|
imageData.put("data",list);
|
resultMap.add(imageData);
|
return resultMap;
|
}
|
private List<Map<String,Object>> getWeekMoneyAndWeightList(String startTime,String endTime,String sysStorageId,List<Map<String,Object>> weekOrderList) {
|
//入库、订单重量 入库、订单金额
|
StorageModel storageModel2 = new StorageModel();
|
storageModel2.setStartTime(startTime);
|
storageModel2.setEndTime(endTime);
|
storageModel2.setSysStorageId(sysStorageId);
|
Map<String,Object> rMap = dao.querySysStorageAll(storageModel2);
|
|
String[] startStr = startTime.split(" ");
|
String[] endStr = endTime.split(" ");
|
rMap.put("startTime",startStr[0]);
|
rMap.put("endTime",endStr[0]);
|
weekOrderList.add(rMap);
|
return weekOrderList;
|
}
|
/**
|
* 按照仓库图表统计周订单数
|
* @param startTime
|
* @param endTime
|
* @param sysStorageId
|
* @param weekOrderList
|
* @return
|
*/
|
private List<Map<String,Object>> getWeekOrderList(String startTime,String endTime,String sysStorageId,List<Map<String,Object>> weekOrderList){
|
Map<String,Object> paramMap = new HashMap<>();
|
//订单量 入库、订单重量 入库、订单金额
|
StorageModel storageModel1 = new StorageModel();
|
storageModel1.setStartTime(startTime);
|
storageModel1.setEndTime(endTime);
|
storageModel1.setSysStorageId(sysStorageId);
|
List<String> orderIdBySysStorageId = dao.sysStorageOrderNum(storageModel1);
|
int orderNum = 0 ;
|
for (String orderIds:orderIdBySysStorageId) {
|
orderNum = orderIds.split(",").length;
|
}
|
String[] startStr = startTime.split(" ");
|
String[] endStr = endTime.split(" ");
|
paramMap.put("startTime",startStr[0]);
|
paramMap.put("endTime",endStr[0]);
|
paramMap.put("orderNum",orderNum);
|
weekOrderList.add(paramMap);
|
return weekOrderList;
|
}
|
|
public List<Map<String,Object>> queryApiArea(){
|
List<Map<String,Object>> areaList = dao.queryApiArea();
|
return areaList;
|
}
|
|
public Map<String,Object> queryTypeData(StorageModel storageModel){
|
|
int p = storageModel.getPage();
|
p = (p - 1) * storageModel.getLimit();
|
List<Map<String,String>> weekOrMonthImgList = new ArrayList<>();
|
Map<String,String> lastMap = new HashMap<>();
|
Map<String,Object> detailImage = new HashMap<>();
|
if(null!=storageModel.getImageType()&&!"".equals(storageModel.getImageType())) {
|
if (storageModel.getImageType().equals("day")) {
|
//weekOrMonthImgList = DateUtil.query12WeekStartTimeAndEndTime();
|
lastMap.put("startTime",sdf1.format(new Date())+" 00:00:00");
|
lastMap.put("endTime",sdf1.format(new Date())+" 23:59:59");
|
//lastMap = weekOrMonthImgList.get(0);
|
} else {
|
weekOrMonthImgList = DateUtil.query12MonthStartTimeAndEndTime();
|
lastMap = weekOrMonthImgList.get(0);
|
}
|
detailImage = queryPageSysStorageTypeName(lastMap.get("startTime"),lastMap.get("endTime"),storageModel.getTypeName(),p,storageModel.getLimit());
|
}else{
|
/*weekOrMonthImgList = DateUtil.query12WeekStartTimeAndEndTime();
|
lastMap = weekOrMonthImgList.get(0);*/
|
detailImage = queryPageSysStorageTypeName(null,null,storageModel.getTypeName(),p,storageModel.getLimit());
|
}
|
|
return detailImage;
|
}
|
|
private Map<String,Object> queryPageSysStorageTypeName(String startTime,String endTime,String typeName,int page,int limit){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
//storageModel.setPartnerIds(partnerIds);
|
StorageModel storageModel1 = new StorageModel();
|
storageModel1.setStartTime(startTime);
|
storageModel1.setEndTime(endTime);
|
List<String> orderIdBySysStorageId = dao.sysStorageOrderNum(storageModel1);
|
List<String> orderIds = new ArrayList<>();
|
for (String ids:orderIdBySysStorageId) {
|
String[] orderIdsTemp = ids.split(",");
|
for (String orderId:orderIdsTemp) {
|
orderIds.add(orderId);
|
}
|
}
|
//判断是否是 该合伙人的订单
|
orderIds = dao.queryOrderIdsByPartners(partnerIds);
|
List<Map<String,Object>> list = new ArrayList<>();
|
int count =0;
|
if(orderIds!=null&&orderIds.size()>0){
|
list = dao.queryPageSysStorageTypeName(orderIds,startTime,endTime,typeName,page,limit);
|
count = dao.queryCountSysStorageTypeName(orderIds,startTime,endTime,typeName);
|
}
|
List<Map<String,Object>> sda = dao.queryStorageDetailAll(startTime,endTime,typeName);
|
|
//总金额
|
BigDecimal totalMoney = new BigDecimal("0");
|
for (Map<String,Object> map:list) {
|
totalMoney = totalMoney.add(new BigDecimal(map.get("money").toString()));
|
}
|
//查询占比
|
for (Map<String,Object> map:list) {
|
BigDecimal moneyError = new BigDecimal("0");
|
BigDecimal weightError = new BigDecimal("0");
|
BigDecimal rate = new BigDecimal("0");
|
if(totalMoney.compareTo(BigDecimal.ZERO)==1){
|
rate = new BigDecimal(map.get("money").toString()).divide(totalMoney,2,RoundingMode.HALF_UP);
|
|
}
|
map.put("rate",rate.multiply(new BigDecimal("100")).toString()+"%");
|
for (Map<String,Object> eMap :sda) {
|
if(null!=eMap.get("title")&&null!=map.get("title")){
|
if(map.get("id").toString().equals(eMap.get("id").toString())){
|
moneyError = new BigDecimal(eMap.get("money").toString()).subtract(new BigDecimal(map.get("money").toString()));
|
weightError = new BigDecimal(eMap.get("weight").toString()).subtract(new BigDecimal(map.get("weight").toString()));
|
break;
|
}
|
}
|
|
}
|
//金额是万元 重量是吨
|
BigDecimal money = new BigDecimal(map.get("money").toString()).divide(new BigDecimal("10000"),2);
|
BigDecimal moneyErrorBig = new BigDecimal(moneyError.toString()).divide(new BigDecimal("10000"),2);
|
BigDecimal weight = new BigDecimal(map.get("weight").toString()).divide(new BigDecimal("1000"),3);
|
BigDecimal weightErrorBig = new BigDecimal(weightError.toString()).divide(new BigDecimal("1000"),3);
|
|
map.put("money",DoubleUtil.roundTwo(money.toString()));
|
map.put("weight",DoubleUtil.roundThree(weight.toString()));
|
map.put("moneyError",DoubleUtil.roundTwo(moneyErrorBig.toString()));
|
map.put("weightError",DoubleUtil.roundThree(weightErrorBig.toString()));
|
}
|
Map<String,Object> imageData = new HashMap<>();
|
imageData.put("totalMoney",DoubleUtil.roundTwo(totalMoney.toString()));
|
imageData.put("data",list);
|
imageData.put("count",count);
|
return imageData;
|
}
|
public Map<String,Object> queryUnregisteredApiList(CollectorModel collectorModel) {
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
collectorModel.setPartnerIds(partnerIds);
|
int p = collectorModel.getPage();
|
p = (p - 1) * collectorModel.getLimit();
|
collectorModel.setPage(p);
|
List<CollectorModel> list = dao.queryUnregisteredApiList(collectorModel);
|
Map<String,Object> map = new HashMap<>();
|
map.put("code",0);
|
map.put("data",list);
|
map.put("count",dao.queryUnregisteredApiCount(collectorModel));
|
return map;
|
}
|
|
|
/**
|
* 根据手机号码查询用户
|
* @param model
|
* @return
|
*/
|
public Map<String, Object> queryEditroleApi(UserEditroleModel model){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
model.setPartnerIds(partnerIds);
|
int p = model.getPage();
|
p = (p - 1) * model.getLimit();
|
model.setPage(p);
|
|
List<UserEditroleModel> list = dao.queryEditroleApi(model);
|
for (UserEditroleModel userModel:list) {
|
if(userModel.getUserTypeValue().equals("7")){
|
userModel.setUserType("打包员");
|
}
|
if(!StringUtils.isEmpty(userModel.getNickName())){
|
|
try {
|
userModel.setNickName(new String(base64.decode(userModel.getNickName()), "UTF-8"));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
int count = dao.queryEditroleApiCount(model);
|
Map<String, Object> m = new HashMap<>();
|
m.put("data", list);
|
m.put("count", count);
|
m.put("code", 0);
|
return m;
|
}
|
|
public String createServiceTerminal(String key,String sid,String userId){
|
String url="https://tsapi.amap.com/v1/track/terminal/add";
|
Map<String,String> map = new HashMap<>();
|
map.put("key",key);
|
map.put("sid",sid);
|
map.put("name",userId);
|
String result = HttpClientUtils.doPost(url,map);
|
Map maps1 = (Map) JSON.parse(result);
|
if(null!=maps1.get("data")){
|
String str1=maps1.get("data").toString();
|
Map maps2 = (Map) JSON.parse(str1);
|
return maps2.get("tid").toString();
|
}
|
return null;
|
}
|
|
public void deleteServiceTerminal(String key,String sid,String tid,String url){
|
Map<String,String> map = new HashMap<>();
|
map.put("key",key);
|
map.put("sid",sid);
|
map.put("tid",tid);
|
String result = HttpClientUtils.doPost(url,map);
|
System.out.println("删除终端返回==============="+result);
|
}
|
private boolean checkOtherUserByType(String userType,String mobilePhone){
|
List<UserModel> list = dao.checkOtherUserByType(userType,mobilePhone);
|
if(null!=list&&list.size()>0){
|
return false;
|
}else{
|
return true;
|
}
|
}
|
|
|
/**
|
* 添加角色
|
* @param userEditroleModel
|
* @return
|
*/
|
@Transactional(rollbackFor = {})
|
public int addEditroleApi(UserEditroleModel userEditroleModel){
|
// 判断此用户类型是否已经删除过,如果已经删除了需要重新恢复
|
String type =userEditroleModel.getUserTypeValue();
|
String phone = userEditroleModel.getMobilePhone();
|
String roleId = userEditroleModel.getRoleId();
|
String password = userEditroleModel.getPassword();
|
String name = userEditroleModel.getName();
|
String area = userEditroleModel.getArea();
|
String cityId="0";
|
String storageId = userEditroleModel.getStorageId();
|
if(null!=userEditroleModel.getCityId()&&!"".equals(userEditroleModel.getCityId())){
|
cityId = userEditroleModel.getCityId();
|
}
|
String partnerId="";
|
if(null!=area&&!"".equals(area)){
|
String[] areaList= area.split(",");
|
partnerId= dao.queryPartnerId(areaList[0]);
|
}
|
if(null!=userEditroleModel.getPartnerId()&&!"".equals(userEditroleModel.getPartnerId())){
|
//userEditroleModel.setPartnerId(partnerId);
|
partnerId = userEditroleModel.getPartnerId();
|
}else{
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
userEditroleModel.setPartnerId(partnerIds.get(0));
|
partnerId = partnerIds.get(0);
|
}
|
}
|
if(null!=roleId&&!"".equals(roleId)){
|
type =dao.queryUserTypeById(roleId);
|
}
|
if(null==area&&"".equals(area)){
|
return 0;
|
}
|
|
UserModel userModels = dao.queryUserByUsertype1(phone, type, "1", "xzx_user_other_info",null,null);
|
Snowflake snowflake = IdUtil.getSnowflake(1, 3);
|
String id="USER"+snowflake.nextIdStr();
|
boolean bool = true;
|
if(userModels == null){
|
// 添加角色需要添加到2个表,一个是用户表,一个是账号表
|
// 一个账号不能有相同的角色
|
UserModel oldModel = dao.queryUserByUsertype1(phone, type, "0", "xzx_user_other_info",null,null);
|
if(oldModel!=null){
|
if(type.equals("2")){
|
boolean flag = checkOtherUserByType("4",phone);
|
if(!flag){
|
return -1;
|
}
|
}else if(type.equals("4")){
|
boolean flag = checkOtherUserByType("2",phone);
|
if(!flag){
|
return -1;
|
}else{
|
flag = checkOtherUserByType("6",phone);
|
if(!flag){
|
return -2;
|
}
|
}
|
}else if(type.equals("6")){
|
boolean flag = checkOtherUserByType("4",phone);
|
if(!flag){
|
return -2;
|
}
|
}
|
String salt=null;
|
String pass=null;
|
if(null!=password&&!"".equals(password)){
|
salt =DateUtil.getRandomNickname(16);
|
pass = DateUtil.encrypt(salt,password);
|
}else{
|
}
|
if(type.equals("4")){
|
dao.updateDelflag(phone, type,roleId,name, "xzx_user_other_info",pass,salt,area,partnerId,cityId,storageId);
|
|
}else{
|
dao.updateDelflag(phone, type,roleId,name, "xzx_user_other_info",pass,salt,area,partnerId,cityId,null);
|
|
}
|
XzxCityPartner partner = cityPartnerService.queryById(partnerId);
|
String serviceType="";
|
if(type.equals("2")){
|
serviceType="1";
|
}else if(type.equals("6")){
|
serviceType="2";
|
}
|
String sid = cityPartnerService.querySidByPid(partnerId,serviceType);
|
|
if(null!=oldModel.getTerminalId()&&!"".equals(oldModel.getTerminalId())){
|
String delUrl="https://tsapi.amap.com/v1/track/terminal/delete";
|
if(oldModel.getUserType().equals("2")){
|
if(type.equals("6")){
|
deleteServiceTerminal(partner.getPartnerKey(),sid,oldModel.getTerminalId(),delUrl);
|
String tid = createServiceTerminal(partner.getPartnerKey().split(",")[0],sid,id);
|
dao.updateOtherUserById(tid,id,type);
|
}
|
}else if(oldModel.getUserType().equals("6")){
|
if(type.equals("2")){
|
deleteServiceTerminal(partner.getPartnerKey(),sid,oldModel.getTerminalId(),delUrl);
|
String tid = createServiceTerminal(partner.getPartnerKey().split(",")[0],sid,id);
|
dao.updateOtherUserById(tid,id,type);
|
}
|
}
|
}else{
|
|
if(null!=serviceType&&!"".equals(serviceType)){
|
String tid = createServiceTerminal(partner.getPartnerKey().split(",")[0],sid,oldModel.getUserId());
|
dao.updateOtherUserById(tid,oldModel.getUserId(),type);
|
}
|
}
|
|
// 删除redis 缓存
|
// redis为map, key为user id, 先根据手机号码查询所有id, 进行遍历删除
|
UserModel userModel = dao.queryUserByUsertype(phone, "1", "0", "xzx_user_info",null,null);
|
// redisService.removeToken(userModel.getUserId());
|
if(null!=userModel){
|
redisService.remove("xzx:user:token:"+userModel.getUserId());
|
redisService.remove("xzx:user:token:"+id);
|
List<Map<String, Object>> userIds = dao.queryCuserByPhoneRedisDelList(phone);
|
for (Map<String,Object> map:userIds) {
|
String userId = map.get("userId").toString();
|
redisService.remove("xzx:user:token:"+userId);
|
}
|
redisService.remove(phone);
|
}
|
|
return 1;
|
}else{
|
if(type.equals("7")){
|
return -2;
|
}
|
|
|
//新增用户 回收员不能与入库员共存
|
|
if(type.equals("2")){
|
boolean flag = checkOtherUserByType("4",phone);
|
if(!flag){
|
return -1;
|
}
|
}else if(type.equals("4")){
|
boolean flag = checkOtherUserByType("2",phone);
|
if(!flag){
|
return -1;
|
}
|
}
|
}
|
// 插入用户表
|
String salt =DateUtil.getRandomNickname(16);
|
String pass="";
|
if(null!=password&&!"".equals(password)){
|
pass = DateUtil.encrypt(salt,password);
|
}else{
|
pass = DateUtil.encrypt(salt,"123456");
|
}
|
if(type.equals("4")){
|
dao.addCuserRole(id, phone, pass,type, "xzx_user_other_info",area,partnerId,name,salt, roleId,cityId,storageId);
|
}else{
|
dao.addCuserRole(id, phone, pass,type, "xzx_user_other_info",area,partnerId,name,salt, roleId,cityId,null);
|
|
}
|
|
//创建终端
|
XzxCityPartner partner = cityPartnerService.queryById(partnerId);
|
String serviceType="";
|
if(type.equals("2")){
|
serviceType="1";
|
}else if(type.equals("6")){
|
serviceType="2";
|
}
|
if(null!=serviceType&&!"".equals(serviceType)){
|
String sid = cityPartnerService.querySidByPid(partnerId,serviceType);
|
String tid = createServiceTerminal(partner.getPartnerKey().split(",")[0],sid,id);
|
dao.updateOtherUserById(tid,id,type);
|
}
|
}else{
|
if(type.equals("7")){
|
return -2;
|
}
|
if(dao.queryUserByUsertype1(phone, type, "1", "xzx_user_other_info",null,null)!=null){
|
//如果有账号就修改,没有就新增
|
bool = false;
|
}
|
if(type.equals("2")){
|
boolean flag = checkOtherUserByType("4",phone);
|
if(!flag){
|
return -1;
|
}
|
}else if(type.equals("4")){
|
boolean flag = checkOtherUserByType("2",phone);
|
if(!flag){
|
return -1;
|
}
|
}
|
String salt =null;
|
String pass=null;
|
if(type.equals("4")){
|
dao.updateDelflag(phone, type,roleId,name, "xzx_user_other_info",pass,salt,area,partnerId,cityId,storageId);
|
|
}else{
|
dao.updateDelflag(phone, type,roleId,name, "xzx_user_other_info",pass,salt,area,partnerId,cityId,null);
|
|
}
|
}
|
UserModel u = dao.queryUserByUsertype1(phone, type, "0", "xzx_user_other_info",null,null);
|
|
// 添加账号表
|
id="ZH"+snowflake.nextIdStr();
|
Map<String,Object> setMap = new HashMap<>();
|
if(type.equals("4")){
|
setMap = settingConsoleDao.queryWarehousingPrice();
|
|
|
}else{
|
setMap = settingConsoleDao.queryOverdrawPrice();
|
}
|
|
String value = setMap.get("configValue").toString();
|
if(!bool){
|
dao.updateCuserAccount(phone,u.getUserId());
|
//dao.addCuserAccountRole(id, phone, u.getUserId(),value);
|
}else{
|
dao.addCuserAccountRole(id, phone, u.getUserId(),value);
|
}
|
// 删除redis 缓存
|
// redis为map, key为user id, 先根据手机号码查询所有id, 进行遍历删除
|
UserModel userModel = dao.queryUserByUsertype(phone, "1", "0", "xzx_user_info",null,null);
|
// redisService.removeToken(userModel.getUserId());
|
//redisService.remove("xzx:user:token:"+userModel.getUserId());
|
//redisService.remove("xzx:user:token:"+id);
|
List<Map<String, Object>> userIds = dao.queryCuserByPhoneRedisDelList(phone);
|
for (Map<String,Object> map:userIds) {
|
String userId = map.get("userId").toString();
|
redisService.remove("xzx:user:token:"+userId);
|
}
|
redisService.remove(phone);
|
return 1;
|
}
|
|
/**
|
* 根据用户ID查询
|
* @param userId
|
* @return
|
*/
|
public UserModel queryUserOtherInfoById(String userId){
|
return dao.queryUserOtherInfoById(userId);
|
}
|
|
public String queryConfigByTagCodeOne(String typeCode){
|
return xzxOrderAppraiseInfoDao.queryConfigByTagCodeOne(typeCode);
|
}
|
}
|