| 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<CityPartner> 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<CityPartner> 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<PartnerGaodeModel> 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<JSONArray> 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<String, Object> queryPartnerAccount(String userId) {  | 
|         String accountInfoMoney = queryAccountByPartnerId(userId);  | 
|         accountInfoMoney = DoubleUtil.roundTwo(accountInfoMoney);  | 
|         Map<String, Object> 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<CityPartner>   queryAllCityPartnerList(String partnerId) {  | 
|         return cityPartnerMapper.queryAllCityPartnerList(partnerId);  | 
|     }  | 
|   | 
|     public List<CityPartner>   queryPartnerName(List<String> partnerIds) {  | 
|         return cityPartnerMapper.queryPartnerName(partnerIds);  | 
|     }  | 
|   | 
|     public List<CityPartner>   queryPackageByPartner(List<String> partnerIds) {  | 
|         return cityPartnerMapper.queryPackageByPartner(partnerIds);  | 
|     }  | 
|   | 
|     public List<String> queryPackageIdList(String partnerId) {  | 
|         return cityPartnerMapper.queryPackageIdList(partnerId);  | 
|     }  | 
|   | 
|     public List<UserModel> queryOtherUserByPid(String pid, AccountMoneyModel model, List<String> packageStationList) {  | 
|         return otherUserMapper.queryOtherUserByPid(pid, model.getUserName(), model.getRoleType(), packageStationList);  | 
|     }  | 
|   | 
|   | 
|     public List<UserModel> 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<AccountMoneyModel> queryAccountByUserIds(AccountMoneyModel model) {  | 
|         PageHelper.startPage(model.getPage(),model.getLimit());  | 
|         List<AccountMoneyModel> list = accountMapper.queryAccountByUserIds(model);  | 
|         PageInfo<AccountMoneyModel> 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<AreaModel> areaList){  | 
|         List<String> list = new ArrayList<>();  | 
|         for (AreaModel area:areaList) {  | 
|             list.add(area.getTownName());  | 
|         }  | 
|         return partnerGaodeMapper.queryPartnerGaode(list);  | 
|     }  | 
|     public void sendPasswordByPartner(CityPartner cityPartner){  | 
|         Map<String,Object> 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<String> queryPartnerByCurrent() {  | 
|         //查询合伙人列表  | 
|         List<String> 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<String> childPartnerIds = xzxOrderComplaintDao.queryChildPids(user.getId()+"");  | 
|             }  | 
|   | 
|         }  | 
|         return partnerIds;  | 
|     }  | 
|   | 
|     public String queryCityPartnerByPhone(String mobilePhone) {  | 
|         return cityPartnerMapper.queryCityPartnerByPhone(mobilePhone);  | 
|     }  | 
|   | 
|   | 
|   | 
|     public Map<String, Object> queryCityPartner(XzxCityPartnerModel model) {  | 
|         List<String> partnerIds = queryPartnerByCurrent();  | 
|         model.setPartnerIdList(partnerIds);  | 
|         if (null != partnerIds && partnerIds.size() > 0) {  | 
|             model.setPackingStation(partnerIds.get(0));  | 
|         }  | 
|         Map<String, Object> 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<XzxCityPartnerModel> list = cityPartnerMapper.queryCityPartner(model);  | 
|         for (XzxCityPartnerModel obj : list) {  | 
|             List<List<String>> townList = new ArrayList<>();  | 
|   | 
|             List<AreaModel> areaList = partnerGaodeMapper.queryAreaByParentner(obj.getId());  | 
|             for (AreaModel am : areaList) {  | 
|                 List<String> townList1 = new ArrayList<>();  | 
|                 townList1.add(am.getProvinceName());  | 
|                 townList1.add(am.getCityName());  | 
|                 townList1.add(am.getTownName());  | 
|                 townList.add(townList1);  | 
|             }  | 
|             obj.setTownList(townList);  | 
|             String cityName = "";  | 
|             List<String> 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<XzxElectronicFenceModel> 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<String> 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<XzxCityPartnerModel> 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<CityPartner>   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<String, Object> queryUserAccountLog(AccountLogModel model) {  | 
|   | 
|         Map<String, Object> 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<String> 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<String> 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<AccountLogModel> 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<String> packageIds = new ArrayList<>();  | 
| //            packageIds.add(packageAccount.getPartnerId());  | 
| //            model.setPartnerIds(packageIds);  | 
| //            if(null!=partnerIds&&partnerIds.size()>0){  | 
| //                List<String> 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<String> 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<AccountLogModel> pageInfo=new PageInfo<>(list);  | 
|         result.put("count", pageInfo.getTotal());  | 
|         result.put("code", 0);  | 
|         result.put("totalMoney", DoubleUtil.roundTwo(totalMoney));  | 
|         return result;  | 
|     }  | 
|   | 
|   | 
|   | 
|     public Map<String, Object> queryPartnerAccountLog(PartnerAccountLogModel model) {  | 
|   | 
|         Map<String, Object> 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<PartnerAccountLogModel> 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<PartnerAccountLogModel> 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<Map<String, String>> queryPartnerCityById(CityPartner  partner) {  | 
|         List<Map<String, String>> list = partnerGaodeMapper.queryPartnerCityById(partner);  | 
|         for (Map<String,String> map:list) {  | 
|             map.put("cityid",map.get("cityId"));  | 
|             map.put("cityname",map.get("cityName"));  | 
|         }  | 
|         return list;  | 
|     }  | 
|   | 
|     public List<Map<String, Object>> queryAreaObj(CityPartner  partner) {  | 
|         List<Map<String, Object>> list = partnerGaodeMapper.queryPidBypartnerId(partner);  | 
|         String partnerId = "";  | 
|         if (null != partner) {  | 
|             partnerId = partner.getId() + "";  | 
|         }  | 
|         for (Map<String, Object> map : list) {  | 
|             String pid = map.get("code").toString();  | 
|             List<Map<String, Object>> clist = partnerGaodeMapper.queryGaodeByCid(partnerId, pid);  | 
|             for (Map<String, Object> cmap : clist) {  | 
|                 List<Map<String, String>> 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<Map<String, Object>> queryAllType(RoleTypeModel model) {  | 
|         List<Map<String,Object>> list;  | 
|         if(model.getRoleType().equals("5")){  | 
|             list = partnerAccountLogMapper.queryAllPartnerType();  | 
|         }else{  | 
|             list = partnerAccountLogMapper.queryAllAccountType();  | 
|         }  | 
|         list = changeTypeNameByType(list,model.getRoleType());  | 
|         return list;  | 
|     }  | 
|   | 
|     public List<Map<String,Object>> changeTypeNameByType(List<Map<String, Object>> typeList,String roleType){  | 
|         for (Map<String, Object> 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<String> 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<String> 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<Map<String, Object>> userIdList = otherUserMapper.queryCuserByPhoneRedisDelList(phone);  | 
|         for (Map<String, Object> map : userIdList) {  | 
|             String userId = map.get("userId").toString();  | 
|             redisUtil.remove("xzx:user:token:" + userId);  | 
|         }  | 
|         redisUtil.remove(phone);  | 
|     }  | 
|   | 
|     /**  | 
|      * 添加合伙人  | 
|      * @param model  | 
|      * @return  | 
|      */  | 
|     public JsonResult<String> addPartner(XzxCityPartnerModel model){  | 
|         //判断是否有分配key  | 
|         List<String> 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<AreaModel> 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<String> 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<String> 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<String> updatePartner(XzxCityPartnerModel model){  | 
|         //判断是否有分配key  | 
|         String key = model.getPartnerKeys();  | 
|         if(model.getPartnerType().equals("1")){  | 
|             if(null==key&&"".equals(model.getPartnerKeys())){  | 
|                 return JsonResult.failMessage(" 修改失败,合伙人key不能为空!");  | 
|             }  | 
|         }  | 
|   | 
|         List<AreaModel> 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<AreaModel> oldAreaModel = model.getOldAreaList();  | 
|             //需要新增的区域  | 
|             List<String> newArea = new ArrayList<>();  | 
|             //需要减少的区域  | 
|             List<String> oldAreaList = new ArrayList<>();  | 
|             List<String> subArea = new ArrayList<>();  | 
|             List<String> 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<AreaModel> 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<CityPartner> list = queryPartnerByMobile(model);  | 
|             if(null!=list&&list.size()>0){  | 
|                 return " 添加失败,手机号码、合伙人或打包站名称不能重复!";  | 
|             }  | 
|         }  | 
|         return null;  | 
|     }  | 
|   | 
|     private List<String> insertGaodeTown(List<AreaModel> areaModelList,String partnerId,String key){  | 
|         List<PartnerGaodeModel>  townCodeList = new ArrayList<>();  | 
|         List<String> 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<String> cityIds){  | 
|         List<SysEnvironmentalInfo> list = sysEnvironmentalInfoService.findByCityId(Constants.TIANXIN_CODE);  | 
|   | 
|         List<SysEnvironmentalInfo> fatherList=new ArrayList<>();  | 
|         List<SysEnvironmentalInfo> 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;  | 
|     }  | 
|   | 
| }  | 
|   |