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.lang.Snowflake; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xzx.gc.common.Result; import com.xzx.gc.common.constant.*; import com.xzx.gc.common.dto.gdmap.FindTraceDto; import com.xzx.gc.common.dto.gdmap.TrackDto; import com.xzx.gc.common.dto.gdmap.UploadTraceLocationDto; import com.xzx.gc.common.exception.RestException; import com.xzx.gc.common.utils.*; import com.xzx.gc.common.utils.ali.SmsUtil; import com.xzx.gc.common.utils.gdmap.GdTraceUtil; import com.xzx.gc.entity.*; import com.xzx.gc.model.JsonResult; import com.xzx.gc.model.admin.*; import com.xzx.gc.user.mapper.*; import com.xzx.gc.util.BeanUtils; import com.xzx.gc.util.DoubleUtil; import com.xzx.gc.util.SessionUtil; import lombok.extern.slf4j.Slf4j; 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 java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @Service @Transactional @Slf4j public class CityPartnerService { @Autowired private RemittanceUserMapper remittanceUserMapper; @Autowired private CityPartnerMapper cityPartnerMapper; @Autowired private PartnerTraceMapper partnerTraceMapper; @Autowired private OtherUserService otherUserService; @Autowired private AddressLevelMapper addressLevelInfoMapper; @Autowired private BannerMapper bannerMapper; @Autowired private ConfigService configService; @Autowired private SessionUtil platformService; @Autowired private SysMessageMapper sysMessageMapper; @Autowired private AccountLogMapper accountLogMapper; @Autowired private OtherUserMapper otherUserMapper; @Autowired private OrderMapper orderMapper; @Autowired private PayInfoMapper payInfoMapper; @Autowired private SysEnvironmentalInfoMapper sysEnvironmentalInfoMapper; @Autowired private PartnerTraceService partnerTraceService; @Autowired private SysEnvironmentalInfoService sysEnvironmentalInfoService; @Autowired private PartnerFenceService partnerFenceService; @Autowired private PartnerFenceMapper partnerFenceMapper; @Autowired private FenceMapper fenceMapper; @Autowired private IdUtils idUtils; @Autowired private PartnerAccountMapper partnerAccountMapper; @Autowired private RedisUtil redisUtil; @Autowired private AccountService accountService; @Autowired private AccountMapper accountMapper; @Autowired private UserMapper userMapper; @Autowired private AddressService addressService; @Autowired private PartnerGaodeMapper partnerGaodeMapper; @Autowired private LongiLatiMapper longiLatiMapper; @Autowired private PartnerGaodeService partnerGaodeService; @Autowired private CoreUserMapper coreUserMapper; @Autowired private PlatformAccountInfoMapper platformAccountInfoMapper; @Autowired private PlatformAccountLogMapper platformAccountLogMapper; @Autowired private PartnerAccountLogMapper partnerAccountLogMapper; @Autowired private CoreUserRoleMapper coreUserRoleMapper; @Autowired private SessionUtil sessionUtil; @Autowired private PartnerAccountService partnerAccountService; /** * 根据合伙人查找打包站列表 * @param partnerId * @return */ public List findPackageIdByPartnerId(String partnerId){ CityPartner cityPartner=new CityPartner(); cityPartner.setPartnerType(OrderEnum.打包站.getValue()); cityPartner.setDelFlag(Constants.DEL_NOT_FLAG); cityPartner.setPackingStation(partnerId); return cityPartnerMapper.select(cityPartner); } public CityPartner findById(Integer id){ return cityPartnerMapper.selectByPrimaryKey(id); } /** * 根据类型查找 分合伙人和打包站 * @param type * @return */ public List findByType(String type){ CityPartner cityPartner=new CityPartner(); cityPartner.setDelFlag(Constants.DEL_NOT_FLAG); cityPartner.setPartnerType(type); return cityPartnerMapper.select(cityPartner); } public int queryElectronicFenceByPartner(String partnerId) { return fenceMapper.queryElectronicFenceByPartner(partnerId); } public void insertGaodeInfo(List gaodeModels) { partnerGaodeMapper.insertGaodeInfo(gaodeModels); } public void deletePartnerTownCode(String partnerId) { partnerGaodeMapper.deletePartnerTownCode(partnerId); } public void deletePartnerAccount(CityPartner partner) { PartnerAccountModel model = new PartnerAccountModel(); model.setDelFlag(1); model.setUserId(partner.getUserId()); partnerAccountMapper.deletePartnerAccount(model); accountService.deleteByUserId(model.getUserId()); } public String deleteServiceByKey(CityPartner partner) { //先删除服务 Result service = GdTraceUtil.findService(partner.getPartnerKey()); if(service.getCode()==0){ JSONArray data = service.getData(); for (Object result : data) { JSONObject jsonObject1= (JSONObject) result; String sid = jsonObject1.getStr("sid"); String name = jsonObject1.getStr("name"); //删除以合伙人id开始命名的服务 if(name.startsWith(partner.getPartnerKey())) { GdTraceUtil.deleteService(partner.getPartnerKey(), sid); } } } int num = partnerTraceMapper.deleteGaodeService(partner.getId() + ""); return num + ""; } public void createServiceByKey(CityPartner partner) { String service1=partnerTraceService.createService(partner, OrderEnum.回收员全天轨迹); String service2=partnerTraceService.createService(partner,OrderEnum.回收员订单轨迹); String service3=partnerTraceService.createService(partner,OrderEnum.推广员全天轨迹); //创建轨迹服务的自定义字段 if(StrUtil.isNotBlank(service1)){ GdTraceUtil.createTraceProp(partner.getPartnerKey(),service1,"address","string"); } if(StrUtil.isNotBlank(service2)){ GdTraceUtil.createTraceProp(partner.getPartnerKey(),service2,"address","string"); } if(StrUtil.isNotBlank(service3)){ GdTraceUtil.createTraceProp(partner.getPartnerKey(),service3,"address","string"); } } public String queryAreaCityList(String city) { return addressLevelInfoMapper.queryAreaCityList(city); } public String queryAreaTownList(String city) { return addressLevelInfoMapper.queryAreaTownList(city); } public String queryGaodeByTownId(String townId) { PartnerGaode byTownId = partnerGaodeService.findByTownId(townId); if(byTownId!=null){ return byTownId.getPartnerId(); } return ""; } public String queryAccountByPartnerId(String userId) { PartnerAccountModel partnerAccountByUserId = partnerAccountMapper.getPartnerAccountByUserId(userId); if(partnerAccountByUserId!=null){ String hbb = partnerAccountByUserId.getHbb(); if(StrUtil.isNotBlank(hbb)){ return hbb; } } return "0"; } public Map queryPartnerAccount(String userId) { String accountInfoMoney = queryAccountByPartnerId(userId); accountInfoMoney = DoubleUtil.roundTwo(accountInfoMoney); Map map = new HashMap<>(); map.put("money", accountInfoMoney); map.put("code", 0); map.put("userId", userId); return map; } public CoreUser queryPartnerAdmin(Long id) { return coreUserMapper.selectByPrimaryKey(id); } public List queryAllCityPartnerList(String partnerId) { return cityPartnerMapper.queryAllCityPartnerList(partnerId); } public List queryPartnerName(List partnerIds) { return cityPartnerMapper.queryPartnerName(partnerIds); } public List queryPackageByPartner(List partnerIds) { return cityPartnerMapper.queryPackageByPartner(partnerIds); } public List queryPackageIdList(String partnerId) { return cityPartnerMapper.queryPackageIdList(partnerId); } public List queryOtherUserByPid(String pid, AccountMoneyModel model, List packageStationList) { return otherUserMapper.queryOtherUserByPid(pid, model.getUserName(), model.getRoleType(), packageStationList); } public List queryUserNormal(AccountMoneyModel model) { return userMapper.queryAllUserByPid(model.getUserName(), model.getRoleType(),model.getPartnerId()); } public int updateAccountLimit(AccountMoneyModel model) { AccountInfo oldModel = accountService.findById(model.getAccountId()); String message =""; String packageUserId=""; OtherUserInfo userModel =otherUserService.findById(oldModel.getUserId()); BigDecimal newOl = new BigDecimal("0"); if (null != userModel) { if (null != userModel.getPartnerId()) { //打包站 if (userModel.getUserType().equals("7")) { PartnerAccountModel pa = partnerAccountMapper.queryAccountIdByUserId(userModel.getUserId()); CityPartner packP = queryById(Long.parseLong(pa.getPartnerId())); PartnerAccount byPartnerId = partnerAccountService.findByPartnerId(packP.getPackingStation()); String cityPartnerMoney = byPartnerId.getHbb(); if (pa.getFixedLimit()!=null) { newOl = new BigDecimal(model.getFixedLimit()).subtract(Convert.toBigDecimal(pa.getOverdraftLimit(),BigDecimal.ZERO)); BigDecimal overFlag = Convert.toBigDecimal(cityPartnerMoney,BigDecimal.ZERO).subtract(newOl); if (overFlag.compareTo(BigDecimal.ZERO) == -1) { return -1; } if(DoubleUtil.roundTwo(pa.getFixedLimit()).equals(DoubleUtil.roundTwo(model.getFixedLimit()))){ return -2; } pa.setOverdraftLimit(model.getFixedLimit()); } else { if(model.getFixedLimit().equals("0")){ return -2; } pa.setOverdraftLimit(model.getFixedLimit()); } pa.setFixedLimit(model.getFixedLimit()); String partnerId = userModel.getPartnerId(); CityPartner partner = queryById(Long.parseLong(partnerId)); Snowflake snowflake = IdUtil.getSnowflake(0, 3); String payOrderId = "ZF" + snowflake.nextIdStr(); pa.setType("7"); if (partner.getPartnerType().equals("2")) { partner = queryById(partner.getPackingStation()); } //调整额度时需要扣除合伙人额度 //UserAccountModel partnerAccount = queryPartnerAccountByUserId(partner.getUserId()); PartnerAccountModel partnerAccountModel = getPartnerAccountByUserId(partner.getUserId()); //insertPartnerAccountLog(partnerAccount, type, newOl, payOrderId, "7"); BigDecimal newPartnerMoney = new BigDecimal(partnerAccountModel.getHbb()).subtract(newOl); if (newPartnerMoney.compareTo(BigDecimal.ZERO) == -1) { return -1; } insertPackageAccountLog(pa,payOrderId,DoubleUtil.roundTwo(newOl.toString()),null,null); //调整打包站额度 updatePackageAccount(pa); //insertPacAccountLog(partnerAccountModel, type, newOl, payOrderId, "7"); //String type, String money, String payOrderId,CityPartner partner,String newMoney BigDecimal pol = newOl.multiply(new BigDecimal("-1")); insertPartnerLogByPartner(partnerAccountModel,"7",pol.toString(),payOrderId,partner,newPartnerMoney.toString()); //partnerAccount.setMoney(newPartnerMoney.doubleValue()); partnerAccountModel.setHbb(DoubleUtil.roundTwo(newPartnerMoney.toString())); partnerAccountModel.setMoney(DoubleUtil.roundTwo(newPartnerMoney.toString())); //updateAccountPartner(partnerAccount); updatePartnerAccount(partnerAccountModel); message="您已经由管理员调整额度,固定额度为:" + pa.getFixedLimit() + "元,可用额度为:" + pa.getOverdraftLimit() + ",请注意变化."; packageUserId = partner.getUserId(); } else { BigDecimal oldol = new BigDecimal(oldModel.getOverdraftLimit()); BigDecimal ollimit = new BigDecimal(oldModel.getFixedLimit()); newOl = new BigDecimal(model.getFixedLimit()).subtract(ollimit); BigDecimal overFlag = oldol.add(newOl); if(new BigDecimal(model.getFixedLimit()).compareTo(BigDecimal.ZERO)==0){ overFlag = oldol.multiply(new BigDecimal("-1")); } boolean flag1 = false; if (overFlag.compareTo(BigDecimal.ZERO) == -1) { if(new BigDecimal(model.getFixedLimit()).compareTo(BigDecimal.ZERO)==0){ flag1 = true; }else{ return -1; } } if(DoubleUtil.roundTwo(oldModel.getFixedLimit()).equals(DoubleUtil.roundTwo(model.getFixedLimit()))){ return -2; } if(!flag1){ oldModel.setOverdraftLimit(DoubleUtil.roundTwo(oldol.add(newOl).toString())); oldModel.setFixedLimit(DoubleUtil.roundTwo(ollimit.add(newOl).toString())); }else{ oldModel.setOverdraftLimit(DoubleUtil.roundTwo("0")); oldModel.setFixedLimit(DoubleUtil.roundTwo("0")); } String type = "8"; //调整额度时需要扣除合伙人额度 String partnerId = userModel.getPartnerId(); CityPartner partner = queryById(partnerId); PartnerAccountModel partnerAccountModel = getPartnerAccountByUserId(partner.getUserId()); Snowflake snowflake = IdUtil.getSnowflake(0, 3); String payOrderId = "ZF" + snowflake.nextIdStr(); if (newOl.compareTo(BigDecimal.ZERO) == -1) { type = "14"; } BigDecimal newPartnerMoney; if(!flag1){ newPartnerMoney = new BigDecimal(partnerAccountModel.getHbb()).subtract(newOl); }else{ newPartnerMoney = new BigDecimal(partnerAccountModel.getHbb()).add(oldol); } if (newPartnerMoney.compareTo(BigDecimal.ZERO) == -1) { return -1; } if(!flag1){ }else{ newOl = overFlag; } partnerAccountModel.setAddType(""); insertPartnerAccountLog(partnerAccountModel, type, newOl, payOrderId, "7"); partnerAccountModel.setMoney(DoubleUtil.roundTwo(newPartnerMoney.toString())); partnerAccountModel.setHbb(DoubleUtil.roundTwo(newPartnerMoney.toString())); updatePartnerAccount(partnerAccountModel); accountMapper.updateAccountLimit(oldModel); } } } else { return 0; } if(null!=message&&!"".equals(message)){ sysMessageMapper.insertMessage(message, packageUserId, "", "1", "额度调整", DateUtil.now()); }else{ //发送系统消息 message = "您已经由管理员调整额度,固定额度为:" + oldModel.getFixedLimit() + "元,可用额度为:" + oldModel.getOverdraftLimit() + ",请注意变化."; sysMessageMapper.insertMessage(message, oldModel.getUserId(), "", "1", "额度调整", DateUtil.now()); } return 1; } public void insertPartnerLogByPartner(PartnerAccountModel accountModel, String type, String money, String payOrderId,CityPartner partner,String newMoney) { //写入日志 PartnerAccountLogModel partnerLog = new PartnerAccountLogModel(); partnerLog.setAccountId(accountModel.getAccount()); partnerLog.setType(type); partnerLog.setCreateTime(DateUtil.now()); partnerLog.setRoleName("城市合伙人"); partnerLog.setUserName(partner.getPartnerName()); partnerLog.setUserPhone(partner.getMobilePhone()); if(type.equals("13")){ BigDecimal subMoney = new BigDecimal(money).multiply(new BigDecimal("-1")) ; partnerLog.setMoney(DoubleUtil.roundTwo(subMoney.toString())); }else{ partnerLog.setMoney(money); } partnerLog.setAccountMoney(accountModel.getHbb()); partnerLog.setHbb(newMoney); partnerLog.setFlowNo(payOrderId); partnerLog.setApproverStatus("1"); partnerLog.setDelFlag(0); partnerAccountMapper.addPartnerAccountLog(partnerLog); } public PageInfo queryAccountByUserIds(AccountMoneyModel model) { PageHelper.startPage(model.getPage(),model.getLimit()); List list = accountMapper.queryAccountByUserIds(model); PageInfo pageInfo=new PageInfo<>(list); for (AccountMoneyModel mm : list) { mm.setMoney(DoubleUtil.roundTwo(mm.getMoney())); OtherUserInfo userModel = otherUserService.findById(mm.getUserId()); if (null != userModel) { if (userModel.getUserType().equals("7")) { //查询打包站额 String partnerId = userModel.getPartnerId(); CityPartner partner = queryById(Long.parseLong(partnerId)); if(null!=partner){ PartnerAccountModel partnerAccountModel = partnerAccountMapper.queryAccountIdByUserId(partner.getUserId()); mm.setFixedLimit(partnerAccountModel.getFixedLimit()); mm.setOverdraftLimit(partnerAccountModel.getOverdraftLimit()); mm.setMobilePhone(userModel.getMobilePhone()); mm.setUserName(userModel.getName()); mm.setRegistTime(userModel.getRegistTime()); mm.setRoleType(userModel.getUserType()); }else{ } } else { if(userModel.getUserType().equals("5")){ String pHbb = queryAccountByPartnerId(mm.getUserId()); if(null!=pHbb&&!"".equals(pHbb)){ mm.setMoney(DoubleUtil.roundTwo(pHbb)); } } mm.setMobilePhone(userModel.getMobilePhone()); mm.setUserName(userModel.getName()); mm.setRegistTime(userModel.getRegistTime()); mm.setRoleType(userModel.getUserType()); } } else { UserModel userInfo = userMapper.queryUserById(mm.getUserId()); userModel=new OtherUserInfo(); BeanUtil.copyProperties(userInfo,userModel); if(userModel!=null) { mm.setMobilePhone(userModel.getMobilePhone()); if (null != userModel.getNickName() && !"".equals(userModel.getNickName())) { mm.setUserName(com.xzx.gc.common.utils.StringUtils.decode(userModel.getNickName())); } else { mm.setUserName("--"); } mm.setRegistTime(userModel.getRegistTime()); mm.setRoleType("1"); } } } return pageInfo; } public int updateAccountType(AccountMoneyModel model) { return accountMapper.updateAccountType(model); } public int queryPartnerGaode(List areaList){ List list = new ArrayList<>(); for (AreaModel area:areaList) { list.add(area.getTownName()); } return partnerGaodeMapper.queryPartnerGaode(list); } public void sendPasswordByPartner(CityPartner cityPartner){ Map map= MapUtil.newHashMap(); map.put("password",cityPartner.getPassword()); map.put("account",cityPartner.getAccountNo()); String content = StrUtil.format("敬爱的合伙人:({account}),您的合伙人账户已经开通,后台登录密码是{password},请登录后台及时更新。谢谢", map); SmsUtil.sendPoint(cityPartner.getMobilePhone(), content); } public List queryPartnerByCurrent() { //查询合伙人列表 List partnerIds = new ArrayList<>(); CoreUser user = platformService.getCurrentUser(); //CoreUser user = cityPartnerMapper.queryCoreUser(); if (user.getId() == 1) { //如果是超管 显示全部投诉订单信息 partnerIds = null; } else { //如果是运营管理员 显示 if (user.getOrgId() == 10) { partnerIds = null; } else { //合伙人显示 该合伙人和名下合伙人的所有订单。 CityPartner partner = cityPartnerMapper.selectByPrimaryKey(user.getId()); if(null!=partner){ partnerIds.add(user.getId() + ""); }else{ partnerIds = null; } //多级合伙人带拓展 //List childPartnerIds = xzxOrderComplaintDao.queryChildPids(user.getId()+""); } } return partnerIds; } public String queryCityPartnerByPhone(String mobilePhone) { return cityPartnerMapper.queryCityPartnerByPhone(mobilePhone); } public Map queryCityPartner(XzxCityPartnerModel model) { List partnerIds = queryPartnerByCurrent(); model.setPartnerIdList(partnerIds); if (null != partnerIds && partnerIds.size() > 0) { model.setPackingStation(partnerIds.get(0)); } Map map = new HashMap<>(); if (null != model.getStartTime() && !"".equals(model.getStartTime())) { model.setStartTime(model.getStartTime() + " 00:00:00"); } if (null != model.getEndTime() && !"".equals(model.getEndTime())) { model.setEndTime(model.getEndTime() + " 23:59:59"); } if (null != model.getPartnerType()) { if (model.getPartnerType().equals("2")) { model.setPartnerIdList(null); } } else { model.setPartnerType("1"); } PageHelper.startPage(model.getPage(),model.getLimit()); if(model.getPartnerType().equals("1")){ model.setPackingStation(null); } List list = cityPartnerMapper.queryCityPartner(model); for (XzxCityPartnerModel obj : list) { List> townList = new ArrayList<>(); List areaList = partnerGaodeMapper.queryAreaByParentner(obj.getId()); for (AreaModel am : areaList) { List townList1 = new ArrayList<>(); townList1.add(am.getProvinceName()); townList1.add(am.getCityName()); townList1.add(am.getTownName()); townList.add(townList1); } obj.setTownList(townList); String cityName = ""; List cityIdList = partnerGaodeMapper.queryGaodeByParentner(obj.getId()); obj.setAreaList(areaList); //当前只支持多选 if (cityIdList.size() > 0) { cityName = addressLevelInfoMapper.queryCityNameById(cityIdList.get(0)); } if(obj.getPartnerType().equals("2")){ //打包站前端需要返回list地址 PartnerGaodeModel gaodeModel = new PartnerGaodeModel(); gaodeModel = partnerGaodeMapper.queryGaodeAreaByPackageId(obj.getId()); if (null != gaodeModel) { String[] packageAddress = gaodeModel.getAddressArea().split(","); obj.setPackageAddress(packageAddress); } } obj.setCityName(cityName); obj.setCzMoney(DoubleUtil.roundTwo(obj.getCzMoney())); obj.setTxMoney(DoubleUtil.roundTwo(obj.getTxMoney())); List fenceNameList = fenceMapper.queryFenceNameList(obj); StringBuffer sb = new StringBuffer(); StringBuffer sbId = new StringBuffer(); if (null != fenceNameList && fenceNameList.size() > 0) { for (XzxElectronicFenceModel stn : fenceNameList) { sb.append(stn.getFenceName()).append(","); sbId.append(stn.getId()).append(","); } String sbStr = sb.toString(); String sbIds = sbId.toString(); if (!"".equals(sbStr)) { sbStr = sbStr.substring(0, sbStr.length() - 1); obj.setFenceName(sbStr); } if (!"".equals(sbIds)) { sbIds = sbIds.substring(0, sbIds.length() - 1); obj.setFenceIds(sbIds); } } List citys = partnerGaodeMapper.queryCitysByPartnerId(obj.getId()); String cityName1 = ""; for (String cityId : citys) { String named = addressLevelInfoMapper.queryCityNameById(cityId); if (null != cityName1 && !"".equals(cityName1)) { cityName1 = cityName1 + "," + named; } else { cityName1 = named; } } if (cityName1 != null && !"".equals(cityName1)) { obj.setCityName(cityName1); } else { String userId = obj.getUserId(); UserModel userModel = otherUserMapper.queryUserOtherById(userId); cityName = addressLevelInfoMapper.queryCityByCityId(userModel.getCityId()); obj.setCityId(userModel.getCityId()); obj.setCityName(cityName); } if (null != obj.getPackingStation() && !"".equals(obj.getPackingStation())) { CityPartner partner = queryById(Long.parseLong(obj.getPackingStation())); obj.setPackingStationName(partner.getPartnerName()); } } PageInfo pageInfo=new PageInfo<>(list); map.put("code", 0); map.put("data", list); map.put("count", pageInfo.getTotal()); return map; } public PartnerAccountModel getPartnerAccountByUserId(String userId) { return partnerAccountMapper.getPartnerAccountByUserId(userId); } public void updatePartnerAccount(PartnerAccountModel partnerAccountModel) { partnerAccountMapper.updatePartnerAccount(partnerAccountModel); } public void updatePackageAccount(PartnerAccountModel partnerAccountModel) { partnerAccountMapper.updatePackageAccount(partnerAccountModel); } public void insertPackageAccountLog(PartnerAccountModel partnerAccountModel, String payOrderId, String money,BigDecimal hbbFp,BigDecimal edFp) { CityPartner partner = cityPartnerMapper.queryEntityByUserIds(partnerAccountModel.getUserId()); PartnerAccountLogModel partnerLog = new PartnerAccountLogModel(); partnerLog.setFlowNo(payOrderId); partnerLog.setCreateTime(DateUtil.now()); partnerLog.setApproverStatus("1"); if(null!=partnerAccountModel.getType()&&!"".equals(partnerAccountModel.getType())){ if(partnerAccountModel.getType().equals("7")){ AccountMoneyModel model = new AccountMoneyModel(); model.setAccountId(partnerAccountModel.getAccount()); AccountMoneyModel oldModel = partnerAccountMapper.queryPartnerByAccountId(model); BigDecimal oldLimit = new BigDecimal(oldModel.getFixedLimit()); BigDecimal oldOverLimit = new BigDecimal(oldModel.getOverdraftLimit()); partnerLog.setManageLimit(DoubleUtil.roundTwo(money)); partnerLog.setManageLimitFix(DoubleUtil.roundTwo(money)); partnerLog.setOldLimitFix(DoubleUtil.roundTwo(oldLimit.toString())); partnerLog.setNewLimitFix(DoubleUtil.roundTwo(partnerAccountModel.getFixedLimit())); partnerLog.setOldLimit(DoubleUtil.roundTwo(oldOverLimit.toString())); partnerLog.setNewLimit(DoubleUtil.roundTwo(partnerAccountModel.getOverdraftLimit())); partnerLog.setMoney(DoubleUtil.roundTwo("0")); partnerLog.setHbb(DoubleUtil.roundTwo(partnerAccountModel.getHbb())); partnerLog.setAccountMoney(DoubleUtil.roundTwo(partnerAccountModel.getHbb())); }else{ //充值处理 if(null!=hbbFp){ //环保币分配 partnerLog.setMoney(DoubleUtil.roundTwo(hbbFp.toString())); partnerLog.setHbb(DoubleUtil.roundTwo(hbbFp.add(new BigDecimal(partnerAccountModel.getHbb())).toString())); partnerLog.setAccountMoney(DoubleUtil.roundTwo(partnerAccountModel.getHbb() + ""));//额度分配 //额度分配 partnerLog.setOldLimit(partnerAccountModel.getOverdraftLimit()); partnerLog.setManageLimit(DoubleUtil.roundTwo(edFp.toString())); partnerLog.setNewLimit(DoubleUtil.roundTwo(edFp.add(new BigDecimal(partnerAccountModel.getOverdraftLimit())).toString())); partnerLog.setOldLimitFix(partnerAccountModel.getFixedLimit()); partnerLog.setManageLimitFix("0"); partnerLog.setNewLimitFix(partnerAccountModel.getFixedLimit()); }else{ partnerLog.setMoney(DoubleUtil.roundTwo(money)); partnerLog.setHbb(DoubleUtil.roundTwo(new BigDecimal(money).add(new BigDecimal(partnerAccountModel.getHbb())).toString())); partnerLog.setAccountMoney(DoubleUtil.roundTwo(partnerAccountModel.getHbb() + "")); } } }else{ partnerLog.setMoney(DoubleUtil.roundTwo(money)); partnerLog.setHbb(DoubleUtil.roundTwo(new BigDecimal(money).add(new BigDecimal(partnerAccountModel.getHbb())).toString())); partnerLog.setAccountMoney(DoubleUtil.roundTwo(partnerAccountModel.getHbb() + "")); } partnerLog.setDelFlag(0); partnerLog.setAccountId(partnerAccountModel.getAccount()); partnerLog.setUserName(partner.getPartnerName()); if(null!=partnerAccountModel.getType()&&!"".equals(partnerAccountModel.getType())){ partnerLog.setType(partnerAccountModel.getType()); }else{ partnerLog.setType("1"); } partnerLog.setUserPhone(partner.getMobilePhone()); partnerLog.setRoleName("打包站"); partnerAccountMapper.addPartnerAccountLog(partnerLog); } public void insertPartnerAccountLog(PartnerAccountModel accountModel, String type, BigDecimal money, String payOrderId, String packageType) { //写入日志 AccountLogModel log = new AccountLogModel(); boolean flag = true; if(null!=accountModel.getAddType()&&!"".equals(accountModel.getAddType())){ log.setNewMoney(DoubleUtil.roundTwo(new BigDecimal(accountModel.getHbb()).add(money).toString())); }else{ flag = false; log.setNewMoney(DoubleUtil.roundTwo(new BigDecimal(accountModel.getHbb()).subtract(money).toString())); } CityPartner partner = cityPartnerMapper.queryEntityByUserIds(accountModel.getUserId()); PartnerAccountLogModel partnerLog = new PartnerAccountLogModel(); partnerLog.setFlowNo(payOrderId); partnerLog.setCreateTime(DateUtil.now()); partnerLog.setApproverStatus("1"); if(type.equals("14")){ if(!flag){ partnerLog.setMoney(DoubleUtil.roundTwo(money.multiply(new BigDecimal("-1")).toString())); }else{ partnerLog.setMoney(DoubleUtil.roundTwo(money.toString())); } }else{ if(!flag){ partnerLog.setMoney(DoubleUtil.roundTwo(money.multiply(new BigDecimal("-1")).toString())); }else{ partnerLog.setMoney(DoubleUtil.roundTwo(money.toString())); } } partnerLog.setHbb(log.getNewMoney()); partnerLog.setDelFlag(0); partnerLog.setAccountId(accountModel.getAccount()); partnerLog.setAccountMoney(DoubleUtil.roundTwo(accountModel.getHbb() + "")); partnerLog.setUserName(partner.getPartnerName()); if (null != packageType) { partnerLog.setType(packageType); } else { if(type.equals("9")){ partnerLog.setType("12"); }else if(type.equals("8")){ partnerLog.setType("7"); }else{ partnerLog.setType("1"); } } partnerLog.setUserPhone(partner.getMobilePhone()); partnerLog.setRoleName("城市合伙人"); partnerAccountMapper.addPartnerAccountLog(partnerLog); } public List queryPartnerByMobile(XzxCityPartnerModel model) { return cityPartnerMapper.queryPartnerByMobile(model); } public UserAccountModel queryPartnerAccountByUserId(String userId) { return accountMapper.getAccountByUserId(userId); } public CityPartner queryById(String partnerId) { return cityPartnerMapper.selectByPrimaryKey(partnerId); } public Map queryUserAccountLog(AccountLogModel model) { Map result = new HashMap<>(); String totalMoney = "0"; CoreUser user = platformService.getCurrentUser(); if (null != model.getAccountId() && !"".equals(model.getAccountId())) { AccountMoneyModel am = new AccountMoneyModel(); am.setAccountId(model.getAccountId()); AccountMoneyModel account = accountMapper.queryAccountByAccountId(am); totalMoney = account.getMoney(); } List partnerIds = queryPartnerByCurrent(); model.setPartnerIds(partnerIds); if (null != model.getStartTime() && !"".equals(model.getStartTime())) { model.setStartTime(model.getStartTime() + " 00:00:00"); } if (null != model.getEndTime() && !"".equals(model.getEndTime())) { model.setEndTime(model.getEndTime() + " 23:59:59"); } List list1 = new ArrayList<>(); if (null != model.getSzType()&&!"".equals(model.getSzType())) { if (model.getSzType().equals("1")) { switch (model.getRoleType()) { case 5: list1.add("1"); list1.add("14"); break; case 2: list1.add("1"); list1.add("4"); list1.add("11"); list1.add("12"); break; case 6: list1.add("1"); list1.add("10"); break; case 1: list1.add("1"); list1.add("3"); list1.add("5"); list1.add("6"); list1.add("7"); list1.add("13"); break; case 7: list1.add("1"); break; default: break; } } else if (model.getSzType().equals("2")) { switch (model.getRoleType()) { case 5: list1.add("2"); list1.add("5"); list1.add("6"); list1.add("7"); list1.add("8"); list1.add("15"); break; case 2: list1.add("2"); list1.add("3"); list1.add("13"); list1.add("15"); break; case 6: list1.add("2"); list1.add("15"); break; case 4: list1.add("4"); list1.add("15"); break; case 1: list1.add("2"); list1.add("15"); break; case 7: list1.add("4"); list1.add("15"); break; default: break; } } else { list1.add("1"); list1.add("2"); list1.add("3"); //操作渠道1:充值 2:提现 3:回收 4入库 5红包 6分享返利 7重量达标返利 list1.add("4"); list1.add("5"); list1.add("6"); list1.add("7"); list1.add("10"); list1.add("11"); list1.add("12"); list1.add("13"); list1.add("8"); list1.add("14"); list1.add("15"); } model.setTypeList(list1); } String mType = model.getChannelType(); List list = new ArrayList<>(); if(model.getRoleType()==5||model.getRoleType()==7) { PageHelper.startPage(model.getPage(), model.getLimit()); list = partnerAccountLogMapper.queryPartnerLog(model); for (AccountLogModel almodel : list) { almodel.setTypeText(changeTypeText(almodel.getChannelType(), almodel.getRoleType()+"")); if (null != almodel.getOldLimit() && !"".equals(almodel.getOldLimit())) { almodel.setOldLimit(DoubleUtil.roundTwo(almodel.getOldLimit())); } else { almodel.setOldLimit("0"); } if (null != almodel.getNewLimit() && !"".equals(almodel.getNewLimit())) { almodel.setNewLimit(DoubleUtil.roundTwo(almodel.getNewLimit())); } else { almodel.setNewLimit("0"); } if(null!=almodel.getNewMoney()&&!"".equals(almodel.getNewMoney())){ almodel.setNewMoney(DoubleUtil.roundTwo(almodel.getNewMoney())); }else{ almodel.setNewMoney(DoubleUtil.roundTwo("0")); } if(null!=almodel.getOldMoney()&&!"".equals(almodel.getOldMoney())){ almodel.setOldMoney(DoubleUtil.roundTwo(almodel.getOldMoney())); }else{ almodel.setOldMoney(DoubleUtil.roundTwo("0")); } if (almodel.getUserType().equals("1")) { //转昵称 String nickName = almodel.getUserName(); if (nickName != null && !"".equals(nickName)) { nickName= com.xzx.gc.common.utils.StringUtils.decode(nickName); } almodel.setUserName(nickName); } if(model.getRoleType()==7) { almodel.setRoleName("打包员"); } } // }else if(model.getRoleType()==7){ // PartnerAccountModel packageAccount = partnerAccountMapper.queryAccountIdByAccountId(model.getAccountId()); // List packageIds = new ArrayList<>(); // packageIds.add(packageAccount.getPartnerId()); // model.setPartnerIds(packageIds); // if(null!=partnerIds&&partnerIds.size()>0){ // List townIds = partnerGaodeMapper.queryTownIdsByPartnerId(partnerIds.get(0)); // model.setTownIds(townIds); // } // if(model.getChannelType().equals("-1")){ // if(mType.equals("")){ // model.setChannelType(null); // } // } // PageHelper.startPage(model.getPage(),model.getLimit()); // //TODO szType=1 收入 2支出 channelType 费用类型 // list = accountLogMapper.queryAccountLogByAccount(model); // for (AccountLogModel r : list) { // if(null!=r.getChannelType()&&!"".equals(r.getChannelType())){ // r.setTypeText(changeTypeText(r.getChannelType(),"0")); // // }else{ // r.setTypeText("充值"); // } // // if(null!=r.getNewMoney()&&!"".equals(r.getNewMoney())){ // r.setNewMoney(DoubleUtil.roundTwo(r.getNewMoney())); // }else{ // r.setNewMoney(DoubleUtil.roundTwo("0")); // } // if(null!=r.getNewLimit()&&!"".equals(r.getNewLimit())){ // r.setNewLimit(DoubleUtil.roundTwo(r.getNewLimit())); // }else{ // r.setNewLimit(DoubleUtil.roundTwo("0")); // } // if(null!=r.getOldMoney()&&!"".equals(r.getOldMoney())){ // r.setOldMoney(DoubleUtil.roundTwo(r.getOldMoney())); // }else{ // r.setOldMoney(DoubleUtil.roundTwo("0")); // } // if (r.getUserType().equals("1")) { // //转昵称 // String nickName = r.getUserName(); // if (nickName != null && !"".equals(nickName)) { // nickName= com.xzx.gc.common.utils.StringUtils.decode(nickName); // } // r.setUserName(nickName); // } // r.setRoleName("打包员"); // } }else{ if(null!=partnerIds&&partnerIds.size()>0){ List townIds = partnerGaodeMapper.queryTownIdsByPartnerId(partnerIds.get(0)); model.setTownIds(townIds); } if(model.getChannelType().equals("-1")){ if(mType.equals("")){ model.setChannelType(null); } } PageHelper.startPage(model.getPage(),model.getLimit()); list = accountLogMapper.queryAccountLogByAccount(model); for (AccountLogModel r : list) { r.setTypeText(changeTypeText(r.getChannelType(),"0")); if(null!=r.getOldLimit()&&!"".equals(r.getOldLimit())){ r.setOldLimit(DoubleUtil.roundTwo(r.getOldLimit())); }else{ r.setOldLimit("0"); } if(null!=r.getNewLimit()&&!"".equals(r.getNewLimit())){ r.setNewLimit(DoubleUtil.roundTwo(r.getNewLimit())); }else{ r.setNewLimit("0"); } if (r.getUserType().equals("1")) { //转昵称 String nickName = r.getUserName(); if (nickName != null && !"".equals(nickName)) { nickName= com.xzx.gc.common.utils.StringUtils.decode(nickName); } r.setUserName(nickName); } r.setRoleName("城市合伙人"); } } result.put("data", list); PageInfo pageInfo=new PageInfo<>(list); result.put("count", pageInfo.getTotal()); result.put("code", 0); result.put("totalMoney", DoubleUtil.roundTwo(totalMoney)); return result; } public Map queryPartnerAccountLog(PartnerAccountLogModel model) { Map result = new HashMap<>(); CoreUser user = platformService.getCurrentUser(); CityPartner partner = queryById(user.getId()); PartnerAccountModel userAccount = new PartnerAccountModel(); if (null != partner) { userAccount = partnerAccountMapper.queryAccountIdByUserId(partner.getUserId()); } else { String acc = platformAccountInfoMapper.queryAccountByAdminId(); String[] accArr = acc.split(","); userAccount.setMoney(accArr[1]); userAccount.setHbb(accArr[2]); } if (null != userAccount) { List list = new ArrayList<>(); PageHelper.startPage(model.getPage(),model.getLimit()); if (null != userAccount.getAccount() && !"".equals(userAccount.getAccount())) { model.setAccountId(userAccount.getAccount()); list = partnerAccountLogMapper.queryPartnerAccountLog(model); } else { list = partnerAccountLogMapper.queryAdminAccountLog(model); for (PartnerAccountLogModel log : list) { String type = log.getType(); if(type.equals(CommonEnum.平台充值.getValue())){ log.setTypeText("充值"); }else if(type.equals(CommonEnum.平台提现.getValue())){ log.setTypeText("提现"); }else if(type.equals(CommonEnum.平台总部流水提佣.getValue())){ log.setTypeText("总部流水提佣"); }else if(type.equals(CommonEnum.平台集货.getValue())){ log.setTypeText("集货"); } log.setApproverStatus("2"); log.setApproverTime(log.getCreateTime()); String userName = log.getUserName(); if (!StringUtils.isEmpty(userName)) { userName = com.xzx.gc.common.utils.StringUtils.decode(log.getUserName()); } if (!StringUtils.isEmpty(userName)) { log.setUserName(userName); } if (null != log.getRoleName()) { if (log.getRoleName().equals("1")) { log.setRoleName("普通用户"); } else if (log.getRoleName().equals("2")) { log.setRoleName("平台用户"); } } else { log.setRoleName("普通用户"); } } } PageInfo pageInfo=new PageInfo<>(list); result.put("data", list); result.put("hbbAccount", userAccount.getHbb()); result.put("moneryAccount", userAccount.getMoney()); result.put("code", 0); result.put("count", pageInfo.getTotal()); } else { result.put("data", new ArrayList<>()); result.put("hbbAccount", "0"); result.put("moneryAccount", "0"); result.put("code", 0); result.put("count", 0); } return result; } public List> queryPartnerCityById(CityPartner partner) { List> list = partnerGaodeMapper.queryPartnerCityById(partner); for (Map map:list) { map.put("cityid",map.get("cityId")); map.put("cityname",map.get("cityName")); } return list; } public List> queryAreaObj(CityPartner partner) { List> list = partnerGaodeMapper.queryPidBypartnerId(partner); String partnerId = ""; if (null != partner) { partnerId = partner.getId() + ""; } for (Map map : list) { String pid = map.get("code").toString(); List> clist = partnerGaodeMapper.queryGaodeByCid(partnerId, pid); for (Map cmap : clist) { List> tlist = partnerGaodeMapper.queryGaodeByTid(partnerId, cmap.get("code").toString()); cmap.put("children", tlist); } map.put("children", clist); } return list; } public int deleteUserByPartnerId(String id, String accountId) { accountMapper.deleteAccount(accountId); return otherUserMapper.deleteUserByPartnerId(id); } public boolean update(CityPartner partner) { return cityPartnerMapper.updateByPrimaryKeySelective(partner)>0?true:false; } public boolean save(CityPartner info) { return cityPartnerMapper.insertUseGeneratedKeys(info)>0?true:false; } public CityPartner queryById(Long id) { return cityPartnerMapper.selectByPrimaryKey(id); } public List> queryAllType(RoleTypeModel model) { List> list; if(model.getRoleType().equals("5")){ list = partnerAccountLogMapper.queryAllPartnerType(); }else{ list = partnerAccountLogMapper.queryAllAccountType(); } list = changeTypeNameByType(list,model.getRoleType()); return list; } public List> changeTypeNameByType(List> typeList,String roleType){ for (Map map:typeList) { if(null!=map){ String key = map.get("type").toString(); Integer type = Integer.parseInt(key); if(roleType.equals("5")){ //1充值 2提现 3重量返利 4提佣 5分享 6阶梯返利 7额度调整 8红包 9推广返利 10人员变动 11结算提成 12额度恢复 13订单投诉 switch (type) { case 1: map.put(key,"充值");map.put("value","充值"); break; case 2:map.put(key,"提现");map.put("value","提现"); break; case 3:map.put(key,"重量返利");map.put("value","重量返利"); break; case 4:map.put(key,"提佣");map.put("value","提佣"); break; case 5:map.put(key,"分享"); map.put("value","分享");break; case 6:map.put(key,"阶梯返利");map.put("value","阶梯返利"); break; case 7:map.put(key,"额度调整"); map.put("value","额度调整");break; case 8:map.put(key,"红包");map.put("value","红包"); break; case 9:map.put(key,"推广返利");map.put("value","推广返利"); break; case 10:map.put(key,"人员变动");map.put("value","人员变动"); break; case 11:map.put(key,"结算提成");map.put("value","结算提成"); break; case 12:map.put(key,"额度恢复"); map.put("value","额度恢复");break; case 13:map.put(key,"订单投诉");map.put("value","订单投诉"); break; default: return null; } }else{ switch (type) { //数字 //1:充值 2:提现 3:回收 4入库 5红包 6分享返利 7重量达标返利 8额度申请 9\ // 额度恢复 10 推广返利 11垫付合伙人 12提成 13重量返利支出 14:额度降低 15总部流水提佣 16订单投诉 case 1: map.put(key,"充值"); map.put("value","充值");break; case 2:map.put(key,"提现"); map.put("value","提现");break; case 3:map.put(key,"回收");map.put("value","回收"); break; case 4:map.put(key,"入库"); map.put("value","入库");break; case 5:map.put(key,"红包"); map.put("value","红包");break; case 6:map.put(key,"分享返利");map.put("value","分享返利"); break; case 7:map.put(key,"重量达标返利"); map.put("value","重量达标返利"); break; case 8:map.put(key,"额度申请"); map.put("value","额度申请");break; case 9:map.put(key,"额度恢复");map.put("value","额度恢复"); break; case 10:map.put(key,"推广返利"); map.put("value","推广返利");break; case 11:map.put(key,"垫付合伙人"); map.put("value","垫付合伙人"); break; case 12:map.put(key,"提成"); map.put("value","提成");break; case 13:map.put(key,"重量返利支出"); map.put("value","重量返利支出"); break; case 14:map.put(key,"额度降低");map.put("value","额度降低"); break; case 15:map.put(key,"总部流水提佣"); map.put("value","总部流水提佣");break; case 16:map.put(key,"订单投诉");map.put("value","订单投诉"); break; default: return null; } } } } return typeList; } public String changeTypeText(String key,String roleType){ Integer type = Convert.toInt(key,1); String typeText = ""; if(roleType.equals("1")){ //合伙人账户类型 //1充值 2提现 3重量返利 4提佣 5分享 6阶梯返利 7额度调整 8红包 9推广返利 10人员变动 11结算提成 12额度恢复 13订单投诉 switch (type) { case 1: typeText = "充值"; break; case 2:typeText="提现"; break; case 3:typeText="重量返利"; break; case 4:typeText="提佣";break; case 5:typeText="分享";break; case 6:typeText="阶梯返利";break; case 7:typeText="额度调整";break; case 8:typeText="红包";break; case 9:typeText="推广返利";break; case 10:typeText="人员变动";break; case 11:typeText="结算提成";break; case 12:typeText="额度恢复";break; case 13:typeText="订单投诉";break; default: return null; } }else{ switch (type) { //用户账户类型 //1:充值 2:提现 3:回收 4入库 5红包 6分享返利 7重量达标返利 8额度申请 9\ // 额度恢复 10 推广返利 11垫付合伙人 12提成 13重量返利支出 14:额度降低 15总部流水提佣 16订单投诉 case 1: typeText="充值";break; case 2:typeText="提现";break; case 3:typeText="回收";break; case 4:typeText="入库";break; case 5:typeText="红包";break; case 6:typeText="分享返利";break; case 7:typeText="重量达标返利";break; case 8:typeText="额度申请";break; case 9:typeText="额度恢复";break; case 10:typeText="推广返利";break; case 11:typeText="垫付合伙人";break; case 12:typeText="提成";break; case 13:typeText="重量返利支出";break; case 14:typeText="额度降低";break; case 15:typeText="总部流水提佣";break; case 16:typeText="订单投诉";break; default: return null; } } return typeText; } /** * 删除合伙人 * @param model * @return */ public JsonResult deletePartner(XzxCityPartnerModel model){ int count = queryElectronicFenceByPartner(model.getId()); if(count>0){ return JsonResult.failMessage("删除合伙人前,请先删除该合伙人的电子围栏!"); }else{ CityPartner partner = queryById(model.getId()); partner.setDelFlag(1); if(partner.getPartnerType().equals(OrderEnum.打包站.getValue())){ List partnerIds = queryPartnerByCurrent(); if(null!=partnerIds&&partnerIds.size()>0){ return JsonResult.failMessage("合伙人不能删除打包站!"); } delCuserById(partner.getUserId(), partner.getMobilePhone(), "7"); }else{ deleteServiceByKey(partner); deleteUserByPartnerId(model.getId(),partner.getAccountNo()); } deletePartnerAccount(partner); deletePartnerTownCode(partner.getId()+""); sysEnvironmentalInfoService.deleteGoods(partner.getId()+""); update(partner); return JsonResult.success(model.getId()); } } private void delCuserById(String id, String phone, String userType) { UserAccountModel account = queryPartnerAccountByUserId(id); if (null == account.getOverdraftLimit() && "".equals(account.getOverdraftLimit())) { account.setOverdraftLimit("0"); } BigDecimal overLimit = new BigDecimal(account.getOverdraftLimit()); //要把可用余额加入到合伙人 UserModel userModel1 = otherUserMapper.queryUserOtherByIdC(id); if (null != userModel1) { if (overLimit.compareTo(BigDecimal.ZERO) == 1) { if (null != userModel1.getPartnerId()) { //调整额度时需要扣除合伙人额度 String partnerId = userModel1.getPartnerId(); CityPartner partner = queryById(partnerId); //UserAccountModel partnerAccount = queryPartnerAccountByUserId(partner.getUserId()); PartnerAccountModel partnerAccountModel = getPartnerAccountByUserId(partner.getUserId()); Snowflake snowflake = IdUtil.getSnowflake(0, 3); String payOrderId = "ZF" + snowflake.nextIdStr(); partnerAccountModel.setAddType("1"); insertPartnerAccountLog(partnerAccountModel, "8", overLimit, payOrderId, "7"); BigDecimal newPartnerMoney = new BigDecimal(partnerAccountModel.getHbb()).add(overLimit); partnerAccountModel.setHbb(DoubleUtil.roundTwo(newPartnerMoney.toString())); updatePartnerAccount(partnerAccountModel); } } } // 删除user_info otherUserService.deleteById(id); // 删除account accountService.deleteByUserId(id); if (userType.equals("普通用户")) { // 删除地址 addressService.deleteByUserId(id); } // 删除redis token UserModel userModel = userMapper.queryUserByUsertype(phone, "1", "0", null, null); // redisService.removeToken(userModel.getUserId()); redisUtil.remove("xzx:user:token:" + id); if (null != userModel) { redisUtil.remove("xzx:user:token:" + userModel.getUserId()); } List> userIdList = otherUserMapper.queryCuserByPhoneRedisDelList(phone); for (Map map : userIdList) { String userId = map.get("userId").toString(); redisUtil.remove("xzx:user:token:" + userId); } redisUtil.remove(phone); } /** * 添加合伙人 * @param model * @return */ public JsonResult addPartner(XzxCityPartnerModel model){ //判断是否有分配key List partnerIds1 = queryPartnerByCurrent(); if(null!=partnerIds1&&partnerIds1.size()>0){ if(model.getPartnerType().equals("1")){ return JsonResult.failMessage("不允许新建下级合伙人!"); } } //不能添加重复区域的合伙人 if(model.getPartnerType().equals("1")){ int num = queryPartnerGaode(model.getAreaList()); if(num>0){ return JsonResult.failMessage("该区域已经存在合伙人!"); } } List areaModelList = model.getAreaList(); String mobile = model.getMobilePhone(); String res = checkSamePartnerName(model,areaModelList,mobile); if(null!=res){ return JsonResult.failMessage(res); } model.setDelFlag(0); model.setCreateTime(DateUtil.now()); CityPartner info = BeanUtils.copy(model, CityPartner.class); info.setDelFlag(0); String userId = idUtils.generate("USER",3); info.setUserId(userId); if(model.getPartnerType().equals(OrderEnum.合伙人.getValue())){ String password = RandomUtil.randomString(6); info.setPassword(password); //发送密码短信 sendPasswordByPartner(info); if(null==info.getOrgId()){ info.setOrgId(Constants.ORG_ID_PARTNER); } info.setState(Constants.IS_START); }else{ if(null==info.getOrgId()){ info.setOrgId(Constants.ORG_ID_PACKAGE); } info.setState(Constants.IS_START); //判断是否合伙人登陆 List partnerIds = queryPartnerByCurrent(); if(null!=partnerIds&&partnerIds.size()>0){ info.setPackingStation(partnerIds.get(0)); }else{ //根据区域查询合伙人Id String townName = model.getTownName(); String townIdPackage = queryAreaTownList(townName); String packingStation = queryGaodeByTownId(townIdPackage); info.setPackingStation(packingStation); } } if(null!=info.getPassword()&&!"".equals(info.getPassword())){ String salt1 = RandomUtil.randomString(16); String newPassword =SecurityUtil.encrypt(salt1,info.getPassword()); info.setPassword(newPassword); info.setSalt(salt1); } info.setPartnerKey(model.getPartnerKeys()); if(save(info)){ //创建服务 if(model.getPartnerType().equals(OrderEnum.合伙人.getValue())){ createServiceByKey(info); String partnerId = queryCityPartnerByPhone(mobile); List townIds = insertGaodeTown(areaModelList,partnerId,model.getPartnerKeys()); info.setId(Integer.parseInt(partnerId)); insertUserOther(info,userId); addAccountInfo(info.getMobilePhone(),userId,model.getAccountNo(),Long.parseLong(info.getId()+""),model.getRoleId()); initGoodsByPartner(partnerId,townIds); }else{ areaModelList = new ArrayList<>(); String cityPackage = model.getCityName(); String cityIdPackage = queryAreaCityList(cityPackage); AreaModel areaModel = new AreaModel(); areaModel.setCityId(Long.parseLong(cityIdPackage)); areaModel.setCityName(cityPackage); areaModel.setProvinceName(model.getProvinceName()); areaModel.setTownName(model.getTownName()); areaModelList.add(areaModel); insertGaodeTown(areaModelList,info.getId()+"",info.getId()+""); insertUserOtherPackage(info,userId,cityIdPackage); addAccountByPackage(info.getMobilePhone(),userId,model.getAccountNo(),Long.parseLong(info.getId()+"")); } return JsonResult.success(info.getId()+""); }else{ return JsonResult.failMessage("添加合伙人失败!"); } } public void addAccountByPackage(String mobilePhone,String userId,String accountNo,Long id){ // 添加账号表 String value = "0"; accountMapper.addCuserAccountRole(accountNo, mobilePhone, userId,value); PartnerAccountModel model = new PartnerAccountModel(); model.setUserId(userId); model.setAccount(accountNo); model.setUpdateTime(cn.hutool.core.date.DateUtil.now()); model.setPartnerId(id+""); model.setOverdraftLimit("0"); model.setFixedLimit("0"); model.setType(OrderEnum.账户打包站.getValue()); partnerAccountMapper.addPartnerAccount(model); //写入消息列表中 String message = "新建打包站成功,您的账号为:"+accountNo+",初始密码为:888888"; sysMessageMapper.insertMessage(message,userId,"","1","新建打包站",DateUtil.now()); } public void addAccountInfo(String mobilePhone,String userId,String accountNo,Long id,Long roleId){ // 添加账号表 String value = "0"; accountMapper.addCuserAccountRole(accountNo, mobilePhone, userId,value); CoreUserRole coreUserRole = new CoreUserRole(); coreUserRole.setCreateTime(new Date()); if(null!=roleId){ coreUserRole.setRoleId(roleId); }else{ coreUserRole.setRoleId(Long.parseLong("180")); PartnerAccountModel model = new PartnerAccountModel(); model.setUserId(userId); model.setAccount(accountNo); model.setUpdateTime(cn.hutool.core.date.DateUtil.now()); model.setPartnerId(id+""); model.setType(OrderEnum.账户合伙人.getValue()); partnerAccountMapper.addPartnerAccount(model); } coreUserRole.setOrgId(Long.parseLong("9")); //String uId = userId.substring(userId.length()-6,userId.length()); //coreUserRole.setUserId(Long.parseLong(uId)); coreUserRole.setUserId(id); coreUserRoleMapper.insert(coreUserRole); //写入消息列表中 String message = "新建合伙人成功,您的账号为:"+accountNo+",初始密码为:888888"; sysMessageMapper.insertMessage(message,userId,"","1","新建合伙人",DateUtil.now()); } /** * 修改合伙人 * @param model * @return */ public JsonResult updatePartner(XzxCityPartnerModel model){ //判断是否有分配key String key = model.getPartnerKeys(); if(model.getPartnerType().equals("1")){ if(null==key&&"".equals(model.getPartnerKeys())){ return JsonResult.failMessage(" 修改失败,合伙人key不能为空!"); } } List areaModelList = model.getAreaList(); if(model.getPartnerType().equals("1")) { if(null==areaModelList&&areaModelList.size()==0){ return JsonResult.failMessage(" 添加失败,合伙人地区不能为空!"); } } model.setDelFlag(0); model.setCreateTime(DateUtil.now()); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); CityPartner info = objectMapper.convertValue(model, CityPartner.class); info.setPartnerKey(key); if(model.getPartnerType().equals("1")){ CityPartner partner=queryById(info.getId()+""); if (null == info.getOrgId()) { info.setOrgId(partner.getOrgId()); } info.setState("S1"); }else{ if(null==info.getOrgId()){ info.setOrgId(16); } info.setState("S1"); } if(update(info)){ //删除合伙人原有区域 deletePartnerTownCode(info.getId()+""); List oldAreaModel = model.getOldAreaList(); //需要新增的区域 List newArea = new ArrayList<>(); //需要减少的区域 List oldAreaList = new ArrayList<>(); List subArea = new ArrayList<>(); List addArea = new ArrayList<>(); for (AreaModel oldArea:oldAreaModel) { oldAreaList.add(oldArea.getTownName()); } for (AreaModel addAreaModel:areaModelList) { addArea.add(addAreaModel.getTownName()); } //是否有新区域 for (String townName:addArea) { boolean flag=false; String townIdPackage = ""; if (oldAreaList.contains(townName)) { flag = true; } townIdPackage = queryAreaTownList(townName); if(!flag){ newArea.add(townIdPackage); } } //减少的区域 for (String oldTown:oldAreaList) { boolean flag=false; String townIdPackage = ""; if (addArea.contains(oldTown)) { flag = true; } townIdPackage = queryAreaTownList(oldTown); if(!flag){ subArea.add(townIdPackage); } } if(null!=newArea&&newArea.size()>0){ initGoodsByPartner(info.getId()+"",newArea); } if(null!=subArea&&subArea.size()>0){ sysEnvironmentalInfoMapper.deleteGoods(info.getId()+"",subArea); bannerMapper.delBannerApiByTown(info.getId()+"",subArea); } insertGaodeTown(areaModelList,info.getId()+"",model.getPartnerKeys()); return JsonResult.success("修改成功!"); }else{ return JsonResult.failMessage("修改合伙人失败!"); } } private String checkSamePartnerName(XzxCityPartnerModel model, List areaModelList, String mobile){ String key = model.getPartnerKeys(); if(model.getPartnerType().equals("1")){ if(null==key&&"".equals(model.getPartnerKeys())){ return " 添加失败,合伙人key不能为空!"; } } if(model.getPartnerType().equals("1")) { if(null==areaModelList&&areaModelList.size()==0){ return " 添加失败,合伙人地区不能为空!"; } } //判断是否有该合伙人手机号 if(null!=mobile&&!"".equals(mobile)){ List list = queryPartnerByMobile(model); if(null!=list&&list.size()>0){ return " 添加失败,手机号码、合伙人或打包站名称不能重复!"; } } return null; } private List insertGaodeTown(List areaModelList,String partnerId,String key){ List townCodeList = new ArrayList<>(); List townIds = new ArrayList<>(); for (AreaModel area:areaModelList) { String city = area.getCityName(); String cityId = queryAreaCityList(city); String cityPackage = area.getCityName(); String cityIdPackage = queryAreaCityList(cityPackage); String provinceName = area.getProvinceName(); String townName = area.getTownName(); String townIdPackage = queryAreaTownList(townName); townIds.add(townIdPackage); PartnerGaodeModel gaodeModel = new PartnerGaodeModel(); gaodeModel.setCityId(cityIdPackage); if(null!=townName&&!"".equals(townName)){ gaodeModel.setAddressArea(provinceName+","+cityPackage+","+townName); }else{ gaodeModel.setAddressArea(provinceName+","+cityPackage); } gaodeModel.setTownId(townIdPackage); gaodeModel.setCityId(cityId); gaodeModel.setCreateTime(DateUtil.now()); gaodeModel.setPartnerId(partnerId); gaodeModel.setPartnerKey(key); gaodeModel.setDelFlag("0"); townCodeList.add(gaodeModel); } insertGaodeInfo(townCodeList); return townIds; } private void insertUserOther(CityPartner info,String userId){ UserModel otherInfo = new UserModel(); otherInfo.setName(info.getPartnerName()); otherInfo.setDelFlag("0"); otherInfo.setMobilePhone(info.getMobilePhone()); otherInfo.setLoginAccount(userId); otherInfo.setRoleIds("3"); otherInfo.setUserType("5"); otherInfo.setUserId(userId); String salt = RandomUtil.randomString(16); otherInfo.setSalt(salt); String pass = SecurityUtil.encrypt(salt,info.getPassword()); otherInfo.setPassword(pass); otherInfo.setRegistTime(DateUtil.now()); otherInfo.setIsProhibit("0"); otherInfo.setPartnerId(info.getId()+""); otherUserMapper.insertUserOtherInfo(otherInfo); } private void insertUserOtherPackage(CityPartner info,String userId,String cityId){ UserModel otherInfo = new UserModel(); otherInfo.setName(info.getPartnerName()); otherInfo.setDelFlag("0"); otherInfo.setMobilePhone(info.getMobilePhone()); otherInfo.setLoginAccount(userId); otherInfo.setRoleIds("6"); otherInfo.setUserType("7"); otherInfo.setCityId(cityId); otherInfo.setUserId(userId); String salt = RandomUtil.randomString(16); otherInfo.setSalt(salt); String pass = SecurityUtil.encrypt(salt,"888888"); otherInfo.setPassword(pass); otherInfo.setRegistTime(DateUtil.now()); otherInfo.setIsProhibit("0"); otherInfo.setPartnerId(info.getId()+""); otherInfo.setAvatar(Constants.DEFAULT_AVATAR); otherUserMapper.insertUserOtherInfo(otherInfo); } //初始化合伙人的物品价格 private void initGoodsByPartner(String partnerId,List cityIds){ List list = sysEnvironmentalInfoService.findByCityId(Constants.TIANXIN_CODE); List fatherList=new ArrayList<>(); List childList=new ArrayList<>(); for (String cityId:cityIds) { //排除自营区的分类 if(!Constants.TIANXIN_CODE.equals(cityId)) { //先加父类 再加子类 for (SysEnvironmentalInfo item : list) { SysEnvironmentalInfo dto=new SysEnvironmentalInfo(); BeanUtil.copyProperties(item,dto); Long parentId=item.getParentId(); //父类 if(parentId==null){ dto.setCityId(Convert.toInt(cityId)); dto.setPartnerId(partnerId); dto.setCreateTime(DateUtil.now()); fatherList.add(dto); } } if(CollUtil.isNotEmpty(fatherList)){ sysEnvironmentalInfoService.insertBatch(fatherList); //再加子类 for (SysEnvironmentalInfo item : list) { Long parentId=item.getParentId(); //父类 if(parentId!=null){ SysEnvironmentalInfo dto=new SysEnvironmentalInfo(); BeanUtil.copyProperties(item,dto); dto.setCityId(Convert.toInt(cityId)); dto.setPartnerId(partnerId); dto.setCreateTime(DateUtil.now()); String fatherItemType = list.stream().filter(x -> x.getId().equals(parentId)).collect(Collectors.toList()).get(0).getItemType(); Long fatherId = fatherList.stream().filter(x -> x.getItemType().equals(fatherItemType)).collect(Collectors.toList()).get(0).getId(); dto.setParentId(fatherId); childList.add(dto); } } if(CollUtil.isNotEmpty(childList)) { sysEnvironmentalInfoService.insertBatch(childList); } } } } } public JsonResult updatePartnerProhibit(XzxCityPartnerModel model){ CityPartner info=queryById(model.getId()); String msg = checkPackageProhibit(model); if(null!=msg){ return JsonResult.failMessage(msg); } if(model.getProhibit()==0){ info.setProhibit(false); }else{ info.setProhibit(true); } info.setUpdateTime(DateUtil.now()); update(info); otherUserMapper.updateOtherUserById1(info.getId()+""); return JsonResult.success("修改成功"); } private String checkPackageProhibit(XzxCityPartnerModel model){ //判断是否合伙人身份 CoreUser user = sessionUtil.getCurrentUser(); CityPartner partner = queryById(user.getId()); if(null!=partner){ //查询打包站账户余额是否为0 String hbb = queryAccountByPartnerId(partner.getUserId()); BigDecimal m = new BigDecimal(hbb); if(m.compareTo(BigDecimal.ZERO)==1){ return "打包站账户余额不为零,无法关闭打包站!"; } } return null; } }