| package com.xzx.gc.pay.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.util.IdUtil;  | 
| import cn.hutool.core.util.NumberUtil;  | 
| import cn.hutool.core.util.StrUtil;  | 
| 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.SimplePage;  | 
| 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.entity.*;  | 
| import com.xzx.gc.model.JsonResult;  | 
| import com.xzx.gc.model.admin.*;  | 
| import com.xzx.gc.model.pay.RkLimitDto;  | 
| import com.xzx.gc.pay.mapper.*;  | 
| import com.xzx.gc.util.DoubleUtil;  | 
| import com.xzx.gc.util.SessionUtil;  | 
| import com.xzx.gc.util.pay.util.entity.TransfersDtoAdmin;  | 
| import lombok.extern.slf4j.Slf4j;  | 
| import org.apache.commons.codec.binary.Base64;  | 
| import org.apache.commons.lang3.StringUtils;  | 
| import org.springframework.beans.factory.annotation.Autowired;  | 
| import org.springframework.stereotype.Service;  | 
| import org.springframework.transaction.annotation.Transactional;  | 
|   | 
| import java.math.BigDecimal;  | 
| import java.math.RoundingMode;  | 
| import java.text.ParseException;  | 
| import java.util.*;  | 
|   | 
| @Service  | 
| @Transactional  | 
| @Slf4j  | 
| public class PayRequestService {  | 
|   | 
|     @Autowired  | 
|     private PayRequestMapper payRequestMapper;  | 
|   | 
|     @Autowired  | 
|     private IdUtils idUtils;  | 
|   | 
|     @Autowired  | 
|     private RemittanceUserService remittanceUserService;  | 
|   | 
|     @Autowired  | 
|     private CityPartnerMapper cityPartnerMapper;  | 
|   | 
|     @Autowired  | 
|     private PayInfoMapper payInfoMapper;  | 
|     @Autowired  | 
|     private AccountService accountService;  | 
|   | 
|     @Autowired  | 
|     private AccountMapper accountMapper;  | 
|   | 
|     @Autowired  | 
|     private ConfigService configService;  | 
|   | 
|     @Autowired  | 
|     private CityPartnerService cityPartnerService;  | 
|   | 
|     @Autowired  | 
|     private SessionUtil sessionUtil;  | 
|   | 
|     @Autowired  | 
|     private UserService userService;  | 
|   | 
|     @Autowired  | 
|     private OtherUserService otherUserService;  | 
|   | 
|     @Autowired  | 
|     private AccountLogMapper accountLogMapper;  | 
|   | 
|     @Autowired  | 
|     private UserRoleMapper userRoleMapper;  | 
|   | 
|     @Autowired  | 
|     private OrderMapper orderMapper;  | 
|   | 
|     @Autowired  | 
|     private RedisUtil redisUtil;  | 
|   | 
|     @Autowired  | 
|     private UserMapper userMapper;  | 
|   | 
|     @Autowired  | 
|     private PartnerAccountMapper partnerAccountMapper;  | 
|   | 
|     @Autowired  | 
|     private RemittanceUserMapper remittanceUserMapper;  | 
|   | 
|     @Autowired  | 
|     private PartnerAccountLogService partnerAccountLogService;  | 
|   | 
|     @Autowired  | 
|     private PartnerAccountLogMapper partnerAccountLogMapper;  | 
|   | 
|     @Autowired  | 
|     private PlatformAccountInfoMapper platformAccountInfoMapper;  | 
|   | 
|     @Autowired  | 
|     private PlatformAccountLogMapper platformAccountLogMapper;  | 
|   | 
|     @Autowired  | 
|     private OtherUserMapper otherUserMapper;  | 
|   | 
|     @Autowired  | 
|     private BusinessUtil businessUtil;  | 
|   | 
|     @Autowired  | 
|     private OrderStorageInfoMapper orderStorageInfoMapper;  | 
|   | 
|     public void add(PayRequestInfo payRequestInfo){  | 
|         String payOrderId = idUtils.generate("ZF",0);  | 
|         payRequestInfo.setPayOrderId(payOrderId);  | 
|         payRequestInfo.setStatus(PayEnum.待审核.getValue());  | 
|         payRequestInfo.setCreateTime(DateUtil.now());  | 
|         AccountInfo accountInfo1 = accountService.findByUserId(payRequestInfo.getCreateUserId());  | 
|         if(accountInfo1!=null){  | 
|             payRequestInfo.setAccountId(accountInfo1.getAccountId());  | 
|         }  | 
|         payRequestMapper.insertSelective(payRequestInfo);  | 
|     }  | 
|   | 
|   | 
|   | 
|     /**  | 
|      * 查询金钱列表  | 
|      * @param moneyModel  | 
|      * @return  | 
|      */  | 
|     public Map<String, Object> queryMoneyList(MoneyModel moneyModel, String page, String limit){  | 
|         if(!StringUtils.isEmpty(moneyModel.getNickName())){  | 
|             moneyModel.setNickName(new String(Base64.encodeBase64(moneyModel.getNickName().getBytes())));  | 
|         }  | 
|         PageHelper.startPage(Convert.toInt(page),Convert.toInt(limit));  | 
|         List<MoneyModel> list = payRequestMapper.queryMoneyList(moneyModel);  | 
|         PageInfo<MoneyModel> pageInfo=new PageInfo<>(list);  | 
|         if(!StringUtils.isEmpty(moneyModel.getMobilePhone())){  | 
|             if(list.size()==0){  | 
|                 PageHelper.startPage(Convert.toInt(page),Convert.toInt(limit));  | 
|                 list = payRequestMapper.queryOtherMoneyList(moneyModel);  | 
|                 pageInfo=new PageInfo<>(list);  | 
|             }  | 
|         }  | 
|         //APPROVAL_TYPE  | 
|         String approvalType =  configService.findByCode("APPROVAL_TYPE").getConfigValue();  | 
|         for (MoneyModel model:list) {  | 
|             model.setApprovalType(approvalType);  | 
|         }  | 
|         long count =0;  | 
|         if(null!=list&&list.size()>0){  | 
|             count= pageInfo.getTotal();  | 
|         }  | 
|         Map<String, Object> m = new HashMap<>();  | 
|         m.put("data", list);  | 
|         m.put("count", count);  | 
|         m.put("code", 0);  | 
|         return m;  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 查询提现列表  | 
|      * @param moneyModel  | 
|      * @return  | 
|      */  | 
|     public JsonResult<Map<String, Object>> queryFundManagementList(MoneyModel moneyModel){  | 
|   | 
|         List<String> partnerIds = new ArrayList<>();  | 
|         if(null!=moneyModel.getPartnerId()&&!"".equals(moneyModel.getPartnerId())){  | 
|             partnerIds.add(moneyModel.getPartnerId());  | 
|         }else{  | 
|             partnerIds =  cityPartnerService.queryPartnerByCurrent();  | 
|         }  | 
|         moneyModel.setPartnerIds(partnerIds);  | 
|         Map<String, Object> map = new HashMap<>();  | 
|         if(!StringUtils.isEmpty(moneyModel.getNickName())){  | 
|             moneyModel.setName(moneyModel.getNickName());  | 
|             moneyModel.setNickName(new String(Base64.encodeBase64(moneyModel.getNickName().getBytes())));  | 
|         }  | 
|         if(null!=partnerIds&&partnerIds.size()>0){  | 
|             List<String> packageIds = cityPartnerService.queryPackageIdByPartnerId(partnerIds.get(0));  | 
|             packageIds.add(partnerIds.get(0));  | 
|             moneyModel.setPartnerIds(packageIds);  | 
|         }  | 
|         if(null!=moneyModel.getStartTime()&&!"".equals(moneyModel.getStartTime())){  | 
|             moneyModel.setStartTime(moneyModel.getStartTime()+" 00:00:00");  | 
|         }  | 
|         if(null!=moneyModel.getEndTime()&&!"".equals(moneyModel.getEndTime())){  | 
|             moneyModel.setEndTime(moneyModel.getEndTime()+" 23:59:59");  | 
|         }  | 
|         PageHelper.startPage(moneyModel.getPage(),moneyModel.getLimit());  | 
|         List<MoneyModel> list = payRequestMapper.queryMoneyList2(moneyModel);  | 
|         PageInfo<MoneyModel> pageInfo=new PageInfo<>(list);  | 
|   | 
|         List<String> payOrderIds = payRequestMapper.queryPayOrderIds(moneyModel);  | 
|   | 
|         CoreUser currentUser = sessionUtil.getCurrentUser();  | 
|         CityPartner pa = cityPartnerService.queryById(currentUser.getId()+"");  | 
|         String todaySuccess ="0";  | 
|         String today="0";  | 
|         if(moneyModel.getPayType()!="9"){  | 
|   | 
|             //MoneyModel m1 = new MoneyModel();  | 
|             moneyModel.setStartTime(DateUtil.today()+" 00:00:00");  | 
|             moneyModel.setEndTime(DateUtil.today()+" 23:59:59");  | 
|             moneyModel.setStatus("2");  | 
|             if(payOrderIds.size()>0){  | 
|                 //m1.setPayOrderIds(payOrderIds);  | 
|                 todaySuccess = payRequestMapper.queryMoneyTodayList(moneyModel);  | 
|             }  | 
|   | 
|             if(null!=todaySuccess&&!"".equals(todaySuccess)){  | 
|                 map.put("todaySuccess", DoubleUtil.roundTwo(todaySuccess));  | 
|             }else{  | 
|                 map.put("todaySuccess",0);  | 
|             }  | 
|             //MoneyModel m2 = new MoneyModel();  | 
|             moneyModel.setStartTime(DateUtil.today()+" 00:00:00");  | 
|             moneyModel.setEndTime(DateUtil.today()+" 23:59:59");  | 
|             moneyModel.setStatus(null);  | 
|             if(payOrderIds.size()>0){  | 
|                 //m2.setPayOrderIds(payOrderIds);  | 
|                 today = payRequestMapper.queryMoneyTodayList(moneyModel);  | 
|             }  | 
|             if(null!=today&&!"".equals(today)){  | 
|                 map.put("today",DoubleUtil.roundTwo(today));  | 
|             }else{  | 
|                 map.put("today",0);  | 
|             }  | 
|         }  | 
|         String approvalType = configService.findByCode("APPROVAL_TYPE").getConfigValue();  | 
|         for (MoneyModel model:list) {  | 
|             model.setApprovalType(approvalType);  | 
|             String userId = model.getCreateUserId();  | 
|             //查询当前额度  | 
|             model = getModelByPayOrderId(model);  | 
|             AccountInfo model1 = accountService.findByUserIdForbidden(userId);  | 
|             if(null!=model1){  | 
|                 if(model.getPayType().equals("9")){  | 
|                     if(null!=model.getOrderId()&&!"".equals(model.getOrderId())){  | 
|                         model.setOverdraftLimit(model.getOldLimit());  | 
|                     }else{  | 
|                         model.setOverdraftLimit(model.getOldLimit());  | 
|                     }  | 
|                     model.setFixedLimit(model.getNewFixedLimit());  | 
|                 }else{  | 
|                     model.setFixedLimit(model.getNewFixedLimit());  | 
|                     model.setOverdraftLimit(model.getNewFixedLimit());  | 
|                 }  | 
|             }else{  | 
|                 model.setFixedLimit("0");  | 
|                 model.setOverdraftLimit("0");  | 
|             }  | 
|             String nickName = "";  | 
|             if(model.getUserType().equals("1")){  | 
|                 nickName= com.xzx.gc.common.utils.StringUtils.decode(model.getNickName());  | 
|             }else{  | 
|                 nickName = model.getNickName();  | 
|             }  | 
|             model.setNickName(nickName);  | 
|             model.setName(nickName);  | 
|             if(model.getPayType().equals("7")){  | 
|                 UserInfo userModel = userService.findById(userId);  | 
|                 if (userModel == null) {  | 
|                     OtherUserInfo otherUserInfo= otherUserService.findById(userId);  | 
|                     userModel=new UserInfo();  | 
|                     BeanUtil.copyProperties(otherUserInfo,userModel);  | 
|                 }  | 
|                 if(userModel!=null){  | 
|                     model.setName(userModel.getName());  | 
|                     model.setMobilePhone(userModel.getMobilePhone());  | 
|                 }else{  | 
|                     model.setName("--");  | 
|                     model.setMobilePhone("--");  | 
|                 }  | 
|             }else if(model.getPayType().equals("9")){  | 
|                 //查询回收员名称和手机号  | 
|                 String userType = "";  | 
|                 UserInfo userModel = userService.findById(userId);  | 
|                 if (userModel == null) {  | 
|                     OtherUserInfo otherUserInfo= otherUserService.findById(userId);  | 
|                     userModel=new UserInfo();  | 
|                     BeanUtil.copyProperties(otherUserInfo,userModel);  | 
|                 }  | 
|                 if(!"1".equals(userType)){  | 
|                     String roleName = userRoleMapper.queryPayInfoUserRole(userType);  | 
|                     model.setRoleName(roleName);  | 
|                 }else{  | 
|                     model.setRoleName("普通用户");  | 
|                 }  | 
|                 if(null!=userModel){  | 
|                     model.setName(userModel.getName());  | 
|                     model.setMobilePhone(userModel.getMobilePhone());  | 
|                 }else{  | 
|                     model.setName("--");  | 
|                     model.setMobilePhone("--");  | 
|                 }  | 
|             }  | 
|         }  | 
|         map.put("data", list);  | 
|         map.put("count", pageInfo.getTotal());  | 
|         map.put("code", 0);  | 
|   | 
|         return JsonResult.success(map);  | 
|     }  | 
|   | 
|     private MoneyModel getModelByPayOrderId(MoneyModel model){  | 
|         MoneyModel newModel = accountLogMapper.getModelByPayOrderId(model);  | 
|         if(null!=newModel){  | 
|             model.setOldLimit(newModel.getOldLimit());  | 
|             model.setNewLimit(newModel.getNewLimit());  | 
|             model.setOldFixedLimit(newModel.getOldFixedLimit());  | 
|             model.setNewFixedLimit(newModel.getNewFixedLimit());  | 
|         }else{  | 
|             model.setOldLimit("-");  | 
|             model.setNewLimit("-");  | 
|             model.setOldFixedLimit("-");  | 
|             model.setNewFixedLimit("-");  | 
|         }  | 
|         return model;  | 
|     }  | 
|   | 
|     public JsonResult<Map<String,Object>> queryPayInfoDetailApi(MoneyModel moneyModel){  | 
|         Map<String,Object> map = new HashMap<>();  | 
|         if(moneyModel.getUserType().equals("1")){  | 
|             map =  payRequestMapper.queryPayInfoDetail(moneyModel.getPayOrderId());  | 
|         }else{  | 
|             map =  payRequestMapper.queryPayInfoDetailHS(moneyModel.getPayOrderId());  | 
|         }  | 
|   | 
|   | 
|         String userId = map.get("create_user_id").toString();  | 
|   | 
|         PayRequestInfoModel model = new PayRequestInfoModel();  | 
|   | 
|         //提现审核详情需要查询用户订单列表  | 
|         if(moneyModel.getUserType().equals("1")){  | 
|             model.setUserId(userId);  | 
|         }else{  | 
|             model.setOtherUserId(userId);  | 
|         }  | 
|         PageHelper.startPage(moneyModel.getPage(),moneyModel.getLimit());  | 
|         List<PayRequestInfoModel> orderList = orderMapper.queryUserOrderList(model);  | 
|         PageInfo<PayRequestInfoModel> pageInfo=new PageInfo<>(orderList);  | 
|         for (PayRequestInfoModel reqModel:orderList) {  | 
|             reqModel.setWeight(DoubleUtil.roundThree(reqModel.getWeight()));  | 
|             reqModel.setMoney(DoubleUtil.roundTwo(reqModel.getMoney()));  | 
|         }  | 
|         map.put("data",orderList);  | 
|         map.put("count",pageInfo.getTotal());  | 
|         map.put("code",0);  | 
|   | 
|         List<Map<String,Object>> totalMap = orderMapper.queryUserOrderMoneyAndWeight(model);  | 
|         BigDecimal totalmoney = new BigDecimal("0");  | 
|         BigDecimal totalweight = new BigDecimal("0");  | 
|         for (Map<String,Object> mw:totalMap) {  | 
|             totalmoney = new BigDecimal(mw.get("money").toString()).add(totalmoney);  | 
|             totalweight = new BigDecimal(mw.get("weight").toString()).add(totalweight);  | 
|         }  | 
|   | 
|         map.put("totalMoney", DoubleUtil.roundTwo(totalmoney.toString()));  | 
|         map.put("totalWeight",DoubleUtil.roundThree(totalweight.toString()));  | 
|   | 
|         if(!"1".equals(map.get("userType"))){  | 
|             String roleName = userRoleMapper.queryPayInfoUserRole(map.get("userType").toString());  | 
|             map.put("roleName",roleName);  | 
|         }else{  | 
|             map.put("roleName","普通用户");  | 
|         }  | 
|   | 
|         if(map.get("status").equals("2")){  | 
|             map.put("statusName","已审核");  | 
|         }else if(map.get("status").equals("3")){  | 
|             map.put("statusName","审核未通过");  | 
|         }else{  | 
|             map.put("statusName","待审核");  | 
|         }  | 
|   | 
|         return JsonResult.success(map);  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 查询充值记录  | 
|      * @param moneyModel  | 
|      */  | 
|     public Map<String, Object> queryRechangeApiList(MoneyModel moneyModel){  | 
|         List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();  | 
|         moneyModel.setPartnerIds(partnerIds);  | 
|   | 
|         if(!StringUtils.isEmpty(moneyModel.getNickName())){  | 
|             moneyModel.setPartnerName(moneyModel.getNickName());  | 
|             moneyModel.setMobilePhone(moneyModel.getNickName());  | 
|         }  | 
|         moneyModel.setPayType("1");  | 
|         Map<String, Object> m = new HashMap<>();  | 
|         String startTime =DateUtil.today()+" 00:00:00";  | 
|         String endTime =DateUtil.today()+" 23:59:59";  | 
|         List<String> statusList = new ArrayList<>();  | 
|         List<String> statusList1 = new ArrayList<>();  | 
|   | 
|         statusList.add("1");  | 
|         statusList.add("2");  | 
|         statusList.add("3");  | 
|         statusList.add("4");  | 
|         statusList.add("5");  | 
|         String today = payInfoMapper.queryRechangeMoney(statusList,"1",startTime,endTime,partnerIds);  | 
|         statusList1.add("2");  | 
|         statusList1.add("3");  | 
|         String todaySuccess = payInfoMapper.queryRechangeMoney(statusList1,"1",startTime,endTime,partnerIds);;  | 
|         if( today==null || today.equals("")){  | 
|             today="0";  | 
|         }  | 
|         if( todaySuccess==null || todaySuccess.equals("")){  | 
|             todaySuccess="0";  | 
|         }  | 
|         m.put("today",DoubleUtil.roundTwo(today));  | 
|         m.put("todaySuccess",DoubleUtil.roundTwo(todaySuccess));  | 
|   | 
|         PageHelper.startPage(moneyModel.getPage(),moneyModel.getLimit());  | 
|         moneyModel.setStartTime(DateUtils.changeTimeBigin(moneyModel.getStartTime()));  | 
|         moneyModel.setEndTime(DateUtils.changeTimeEnd(moneyModel.getEndTime()));  | 
|         List<MoneyModel>  list1 =  payInfoMapper.queryRechangeApiList(moneyModel);  | 
|         PageInfo<MoneyModel> pageInfo=new PageInfo<>(list1);  | 
|         for (MoneyModel model:list1) {  | 
|             String nickName = "";  | 
|             model.setMoney(DoubleUtil.roundTwo(model.getMoney()));  | 
|             if(null!=model.getPartnerName()&&!"".equals(model.getPartnerName())){  | 
|                 String payOrderId=model.getPayOrderId();  | 
|                 nickName = model.getPartnerName();  | 
|                 model.setMobilePhone(model.getPartnerPhone());  | 
|                 if(model.getPartnerType().equals("1")){  | 
|                     model.setRoleName("城市合伙人");  | 
|                 }else{  | 
|                     model.setRoleName("打包站");  | 
|                 }  | 
|                 RemittanceUser remittanceUser = remittanceUserService.findByPayOrderId(payOrderId);  | 
|                 RemittanceModel remittanceModel=new RemittanceModel();  | 
|                 BeanUtil.copyProperties(remittanceUser,remittanceModel);  | 
|                 model.setRemittanceModel(remittanceModel);  | 
|                 if(null==model.getFee()){  | 
|                     model.setFee("0");  | 
|                 }  | 
|                 BigDecimal fee = new BigDecimal(model.getFee());  | 
|                 model.setFee(DoubleUtil.roundTwo(fee.toString()));  | 
|             }else{  | 
|                 if(com.xzx.gc.common.utils.StringUtils.isBase64(model.getNickName())) {  | 
|                     nickName = com.xzx.gc.common.utils.StringUtils.decode(model.getNickName());  | 
|                 }else {  | 
|                     nickName=model.getNickName();  | 
|                 }  | 
|                 if(null==model.getFee()){  | 
|                     model.setFee("0");  | 
|                 }  | 
|                 BigDecimal fee = new BigDecimal(model.getFee());  | 
|                 BigDecimal tMoney = new BigDecimal(model.getMoney());  | 
|                 model.setMoney(DoubleUtil.roundTwo(tMoney.toString()));  | 
|                 model.setFee(DoubleUtil.roundTwo(fee.toString()));  | 
|   | 
|                 String userId = model.getCreateUserId();  | 
|                 UserInfo user = userService.findById(userId);  | 
|                 //RemittanceModel remittanceModel = new RemittanceModel();  | 
|                 if(null!=user){  | 
|                        /* 充值姓名:  | 
|                         充值手机号:  | 
|                         角色:*/  | 
|                     model.setRoleName("普通用户");  | 
|                     model.setUserType(user.getUserType());  | 
|                     String userName =  com.xzx.gc.common.utils.StringUtils.decode(user.getNickName());  | 
|                     model.setPayName(userName);  | 
|                     model.setPayMobile(user.getMobilePhone());  | 
|                     model.setPartnerName(user.getName());  | 
|                     model.setPartnerPhone(user.getMobilePhone());  | 
|                     RemittanceModel remittanceModel = new RemittanceModel();  | 
|                     remittanceModel.setCreateUserId(userId);  | 
|                     remittanceModel.setRechargePhone(user.getMobilePhone());  | 
|                     remittanceModel.setRechargeName(user.getName());  | 
|                     model.setRemittanceModel(remittanceModel);  | 
|   | 
|                 }else{  | 
|                     OtherUserInfo otherUserInfo = otherUserService.findById(userId);  | 
|                     if(null!=otherUserInfo){  | 
|                         user=new UserInfo();  | 
|                         BeanUtil.copyProperties(otherUserInfo,user);  | 
|                         RemittanceModel remittanceModel = new RemittanceModel();  | 
|                         remittanceModel.setCreateUserId(userId);  | 
|                         remittanceModel.setRechargePhone(user.getMobilePhone());  | 
|                         remittanceModel.setRechargeName(user.getName());  | 
|                         model.setUserType(user.getUserType());  | 
|                         String roleName =userRoleMapper.queryPayInfoUserRole(user.getUserType());  | 
|                         model.setRoleName(roleName);  | 
|                         model.setPayName(user.getName());  | 
|                         model.setPartnerName(user.getName());  | 
|                         model.setPartnerPhone(user.getMobilePhone());  | 
|                         model.setPayMobile(user.getMobilePhone());  | 
|                         model.setRemittanceModel(remittanceModel);  | 
|                     }  | 
|   | 
|                 }  | 
|             }  | 
|             model.setNickName(nickName);  | 
|         }  | 
|         m.put("data", list1);  | 
|         m.put("count", pageInfo.getTotal());  | 
|         m.put("code", 0);  | 
|         return m;  | 
|     }  | 
|   | 
|   | 
|     public Map<String, Object> queryRechangeApiDetail(PayInfoModel model){  | 
|         PayInfoModel result = payInfoMapper.queryRechangeApiDetail(model);  | 
|         Map<String, Object> map = new HashMap<>();  | 
|         if(null!=result){  | 
|             map.put("data",result);  | 
|             map.put("code",0);  | 
|             map.put("msg","查询成功");  | 
|         }else{  | 
|             map.put("code",-1);  | 
|             map.put("msg","查询失败");  | 
|         }  | 
|         return map;  | 
|     }  | 
|   | 
|   | 
|     public JsonResult<String> audit(TransfersDtoAdmin dto){  | 
|         MoneyModel moneyModel = new MoneyModel();  | 
|         moneyModel.setPayOrderId(dto.getPayOrderId());  | 
|         moneyModel = payRequestMapper.queryMoney(moneyModel);  | 
|         UserInfo userModel = userService.findById(moneyModel.getCreateUserId());  | 
|         if (userModel == null) {  | 
| //            if (moneyModel.getPayType().equals("9")) {  | 
| //                userModel = cuserConsoleService.queryRecoveryById(moneyModel.getCreateUserId(), "4");  | 
| //            } else {  | 
| //                userModel = cuserConsoleService.queryRecoveryById(moneyModel.getCreateUserId(), "2");  | 
| //            }  | 
|             OtherUserInfo byId = otherUserService.findById(moneyModel.getCreateUserId());  | 
|             userModel=new UserInfo();  | 
|             BeanUtil.copyProperties(byId,userModel);  | 
|         }  | 
|   | 
|         if (null != userModel) {  | 
|             AccountInfo userAccountModel = accountService.findByUserIdForbidden(moneyModel.getCreateUserId());  | 
|             if (userAccountModel == null) {  | 
|                 return JsonResult.success("此用户未查询到账户信息");  | 
|             } else {  | 
|                 String money = moneyModel.getMoney();  | 
|                 String type = "";  | 
|                 if (moneyModel.getPayType().equals("9")) {  | 
|                     type = "9";  | 
|                     BigDecimal money1 = new BigDecimal(userAccountModel.getFixedLimit()).subtract(new BigDecimal(userAccountModel.getOverdraftLimit()));  | 
|                     money = DoubleUtil.roundTwo(money1.toString());  | 
|                     accountMapper.updateLimitByUserId(userAccountModel.getAccountId(), moneyModel.getMoney());  | 
|                 } else {  | 
|                     type = "8";  | 
|                     accountService.updateOverdrawPriceByUserId(userAccountModel.getAccountId(), moneyModel.getMoney());  | 
|                 }  | 
|                 //此处需要扣除合伙人的钱  | 
|                 String partnerId = userModel.getPartnerId();  | 
|                 CityPartner partner = cityPartnerService.queryById(partnerId);  | 
|                 if (partner.getPartnerType().equals("2")) {  | 
|                     partner = cityPartnerService.queryById(partner.getPackingStation());  | 
|                 }  | 
|                 PartnerAccountModel partnerAccountModel = partnerAccountMapper.getPartnerAccountByUserId(partner.getUserId());  | 
|                 Snowflake snowflake = IdUtil.getSnowflake(0, 3);  | 
|                 String payOrderId = "ZF" + snowflake.nextIdStr();  | 
|                 partnerAccountLogService.insertPartnerAccountLog(partnerAccountModel, type, new BigDecimal(money), payOrderId, null);  | 
|                 BigDecimal newPartnerMoney = new BigDecimal(partnerAccountModel.getHbb()).subtract(new BigDecimal(money));  | 
|                 if (newPartnerMoney.compareTo(BigDecimal.ZERO) == -1) {  | 
|                     return JsonResult.failMessage("所属合伙人需要充值!余额不够分配!");  | 
|                 }  | 
|   | 
|                 //partnerAccount.setMoney(newPartnerMoney.doubleValue());  | 
|                 partnerAccountModel.setMoney(DoubleUtil.roundTwo(newPartnerMoney.toString()));  | 
|                 partnerAccountModel.setHbb(DoubleUtil.roundTwo(newPartnerMoney.toString()));  | 
|                 //cityPartnerService.updateAccountPartner(partnerAccount);  | 
|                 partnerAccountMapper.updatePartnerAccount(partnerAccountModel);  | 
|                 CoreUser user = sessionUtil.getCurrentUser();  | 
|                 //修改申请状态  | 
|                 moneyModel.setStatus("2");  | 
|                 moneyModel.setUpdateTime(DateUtil.now());  | 
|                 moneyModel.setCreateUserId(String.valueOf(user.getId()));  | 
|                 moneyModel.setUnpassReason("");  | 
|                 payRequestMapper.updateMoney(moneyModel);  | 
|                 //写入日志  | 
|                 AccountLogModel log = new AccountLogModel();  | 
|                 log.setAccountId(userAccountModel.getAccountId());  | 
|                 log.setChannelType(type);  | 
|                 log.setCreateTime(DateUtil.now());  | 
|                 log.setCreateUserId(userAccountModel.getUserId());  | 
|                 BigDecimal oldFixedLimit = new BigDecimal(String.valueOf(userAccountModel.getFixedLimit()));  | 
|                 BigDecimal oldLimit = new BigDecimal(String.valueOf(userAccountModel.getOverdraftLimit()));  | 
|                 if(moneyModel.getPayType().equals(PayEnum.额度恢复.getValue())){  | 
|                     log.setNewFixedLimit(oldFixedLimit.toString());  | 
|   | 
|                 }else{  | 
|                     log.setNewFixedLimit(oldFixedLimit.add(new BigDecimal(moneyModel.getMoney())).toString());  | 
|   | 
|                 }  | 
|                 log.setNewLimit(oldLimit.add(new BigDecimal(moneyModel.getMoney())).toString());  | 
|                 log.setNewMoney(String.valueOf(userAccountModel.getMoney()));  | 
|                 log.setOldFixedLimit(oldFixedLimit.toString());  | 
|                 log.setOldLimit(oldLimit.toString());  | 
|                 log.setOldMoney(String.valueOf(userAccountModel.getMoney()));  | 
|                 log.setOrderId(dto.getPayOrderId());  | 
|                 accountLogMapper.insertAccountLog(log);  | 
|                 return JsonResult.success("完成审核");  | 
|             }  | 
|         } else {  | 
|             return JsonResult.failMessage("查不到对应的申请人");  | 
|         }  | 
|     }  | 
|   | 
|   | 
|     public JsonResult<String> auditDeny(TransfersDtoAdmin dto){  | 
|         MoneyModel moneyModel = new MoneyModel();  | 
|         moneyModel.setPayOrderId(dto.getPayOrderId());  | 
|         moneyModel = payRequestMapper.queryMoney(moneyModel);  | 
|         moneyModel.setStatus("3");  | 
|         moneyModel.setUnpassReason(dto.getUnpassReason());  | 
|         payRequestMapper.updateMoney(moneyModel);  | 
|         return JsonResult.success();  | 
|     }  | 
|   | 
|   | 
|     public String addPayInfoImg(PayInfoModel model) {  | 
|         Snowflake snowflake1 = IdUtil.getSnowflake(0, 3);  | 
|         String payOrderId = "ZF" + snowflake1.nextIdStr();  | 
|         RemittanceModel remittanceModel = new RemittanceModel();  | 
|         remittanceModel.setBankName("长沙银行股份有限公司鑫泰支行");  | 
|         remittanceModel.setCompany("湖南小棕熊环保科技有限公司");  | 
|         remittanceModel.setCompanyAccount("800271283808014");  | 
|         remittanceModel.setCreateTime(DateUtil.now());  | 
|         remittanceModel.setRechargeName(model.getRechargeName());  | 
|         remittanceModel.setRechargePhone(model.getRechargePhone());  | 
|         remittanceModel.setPayOrderId(payOrderId);  | 
|         CoreUser user = sessionUtil.getCurrentUser();  | 
|         CityPartner  partner = cityPartnerMapper.selectByPrimaryKey(user.getId());  | 
|         if (null == partner) {  | 
|             if (null != model.getPartnerId() && !"".equals(model.getPartnerId())) {  | 
|                 partner = cityPartnerMapper.selectByPrimaryKey(Long.parseLong(model.getPartnerId()));  | 
|             }  | 
|         }else{  | 
|             if(null!=model.getPartnerId()&&!"".equals(model.getPartnerId())){  | 
|                 partner = cityPartnerMapper.selectByPrimaryKey(Long.parseLong(model.getPartnerId()));  | 
|   | 
|             }  | 
|         }  | 
|         remittanceModel.setCreateUserId(partner.getUserId() + "");  | 
|         remittanceUserMapper.insertRemittance(remittanceModel);  | 
|   | 
|   | 
|         model.setPayOrderId(payOrderId);  | 
|         model.setCreateUserId(partner.getUserId() + "");  | 
|   | 
|         int num = payInfoMapper.addPayInfo(model);  | 
| //        PartnerAccountLogModel log = new PartnerAccountLogModel();  | 
| //        log.setFlowNo(payOrderId);  | 
| //        log.setCreateTime(DateUtil.now());  | 
| //        log.setApproverStatus("1");  | 
| //        log.setMoney(model.getMoney());  | 
| //        log.setHbb(model.getMoney());  | 
| //        log.setDelFlag(0);  | 
| //        log.setAccountId(partner.getAccountNo());  | 
| //        log.setUserName(partner.getPartnerName());  | 
| //        log.setType("1");  | 
| //        log.setUserPhone(partner.getMobilePhone());  | 
| //        if (partner.getPartnerType().equals("1")) {  | 
| //            log.setRoleName("城市合伙人");  | 
| //        } else {  | 
| //            log.setRoleName("打包站");  | 
| //        }  | 
| //  | 
| //        partnerAccountLogMapper.addPartnerAccountLog(log);  | 
|   | 
|   | 
|         //发送审核短信  | 
|         if(SpringUtil.isProdOrCloud()) {  | 
|             String phone = configService.findByCode(SysConfigConstant.PAT_AUDIT_PHONE).getConfigValue();  | 
|             Map<String, String> map = new HashMap<>();  | 
|             map.put("money", model.getMoney());  | 
|             map.put("account", model.getRechargePhone());  | 
|             String content = StrUtil.format("账号{account}提交一笔充值{money}元的申请,请尽快审核", map);  | 
|             String[] strings = StrUtil.splitToArray(phone, Convert.toChar(","));  | 
|             for (String string : strings) {  | 
|                 SmsUtil.sendPoint(string, content);  | 
|             }  | 
|         }  | 
|   | 
|         return num + "";  | 
|     }  | 
|   | 
|   | 
|     public void updatePayInfoPass(PayInfoModel model) {  | 
|         String payOrderId = model.getPayOrderId();  | 
|         String key=RedisKeyConstant.PAY_AUDIT+payOrderId;  | 
|   | 
|         if(redisUtil.setnx(key,"0")) {  | 
|             try {  | 
|                 PayInfoModel payInfo = payInfoMapper.queryPayInfoById(payOrderId);  | 
|                 payInfoMapper.updatePayInfoPass(model);  | 
|                 PartnerAccountLogModel partnerAccountLogModel = new PartnerAccountLogModel();  | 
|                 //审核通过,需要修改用户可用余额  | 
|                 //1:查询合作人账号  | 
|                 PartnerAccountModel pAccount = partnerAccountMapper.getPartnerAccountByUserId(model.getCreateUserId());  | 
|                 String acc = platformAccountInfoMapper.queryAccountByAdminId();  | 
|                 String[] accArr = acc.split(",");  | 
|                 String adminMoney = accArr[1];  | 
|                 String adminhbb = accArr[2];  | 
|   | 
|                 if (null != pAccount) {  | 
|                     if (null != pAccount.getHbb()) {  | 
|                     } else {  | 
|                         pAccount.setHbb("0");  | 
|                     }  | 
|                     BigDecimal oldhbb = new BigDecimal(pAccount.getHbb());  | 
|                     BigDecimal newhbb = oldhbb.add(new BigDecimal(payInfo.getMoney()));  | 
|                     //平台  | 
|                     BigDecimal oldAdminMoney = new BigDecimal(adminMoney);  | 
|                     BigDecimal oldAdminhbb = new BigDecimal(adminhbb);  | 
|                     CoreUser user = sessionUtil.getCurrentUser();  | 
|                     BigDecimal b3 = new BigDecimal(pAccount.getHbb());  | 
|                     //平台账户处理充值  | 
|                     BigDecimal newAdminMoney = oldAdminMoney.add(new BigDecimal(payInfo.getMoney()));  | 
|                     BigDecimal newAdminhbb = oldAdminhbb.subtract(new BigDecimal(payInfo.getMoney()));  | 
|                     partnerAccountLogModel.setApprover(user.getName());  | 
|                     partnerAccountLogModel.setUpdateTime(DateUtil.now());  | 
|                     partnerAccountLogModel.setApproverTime(DateUtil.now());  | 
|                     partnerAccountLogModel.setHbb(b3.add(new BigDecimal(payInfo.getMoney())).toString());  | 
|                     partnerAccountLogModel.setFlowNo(payOrderId);  | 
|                     partnerAccountLogModel.setApproverStatus("2");  | 
|                     if (pAccount.getType().equals(OrderEnum.账户合伙人.getValue())) {  | 
|                         //合伙人充值  | 
|                         if (model.getStatus().equals(PayEnum.已审核.getValue())) {  | 
|                             BigDecimal b1 = new BigDecimal(pAccount.getHbb());  | 
|                             BigDecimal b2 = new BigDecimal(model.getMoney());  | 
|                             partnerAccountMapper.updateParterAccountMoney(DoubleUtil.roundTwo(b3.add(b2).toString()), pAccount.getAccount());  | 
|                             platformAccountInfoMapper.updatePlatformMoney(DoubleUtil.roundTwo(newAdminMoney.toString()));  | 
|                             platformAccountInfoMapper.updatePlatformHbb(DoubleUtil.roundTwo(newAdminhbb.toString()));  | 
|   | 
|                             CityPartner partner = cityPartnerService.queryById(pAccount.getPartnerId());  | 
|                             PartnerAccountModel pAccount1 = partnerAccountMapper.getPartnerAccountByUserId(partner.getUserId());  | 
|                             String userM = "0";  | 
|                             if (null != pAccount1.getHbb() & !"".equals(pAccount1.getHbb())) {  | 
|                                 userM = DoubleUtil.roundTwo(pAccount1.getHbb());  | 
|                             }  | 
|                             String packUserId = partner.getUserId();  | 
|                             log.debug("打包员金额为::" + userM + "打包员的UserId 为" + packUserId);  | 
|                             PlatformAccountLogModel platformAccountLogModel = new PlatformAccountLogModel();  | 
|                             platformAccountLogModel.setCreateTime(DateUtil.now());  | 
|                             platformAccountLogModel.setCreateUserId(pAccount.getPartnerId());  | 
|                             platformAccountLogModel.setMoney(DoubleUtil.roundTwo(payInfo.getMoney()));  | 
|                             platformAccountLogModel.setHbb("-" + DoubleUtil.roundTwo(payInfo.getMoney()));  | 
|                             platformAccountLogModel.setOldHbb(DoubleUtil.roundTwo(oldAdminhbb.toString()));  | 
|                             platformAccountLogModel.setOldMoney(DoubleUtil.roundTwo(oldAdminMoney.toString()));  | 
|                             platformAccountLogModel.setNewHbb(DoubleUtil.roundTwo(newAdminhbb.toString()));  | 
|                             platformAccountLogModel.setNewMoney(DoubleUtil.roundTwo(newAdminMoney.toString()));  | 
|                             platformAccountLogModel.setCreateUserName(partner.getPartnerName());  | 
|                             platformAccountLogModel.setCreateUserType("2");  | 
|                             platformAccountLogModel.setCreateUserMobile(partner.getMobilePhone());  | 
|                             platformAccountLogModel.setFlowNo(payOrderId);  | 
|                             platformAccountLogMapper.insertPlatFormLog(platformAccountLogModel);  | 
|                             partnerAccountLogModel.setAccountMoney(b1.toString());  | 
|                             partnerAccountLogMapper.updateParterAccountLog(partnerAccountLogModel);  | 
|                         } else {  | 
|                             partnerAccountLogModel.setApproverStatus(PayEnum.审核不通过.getValue());  | 
|                         }  | 
|                     } else {  | 
|                         //打包站充值 查询打包站的账号  | 
|                         if (model.getStatus().equals(PayEnum.已审核.getValue())) {  | 
|                             CityPartner packagePartner = cityPartnerService.queryById(pAccount.getPartnerId());  | 
|                             CityPartner partner = cityPartnerService.queryById(packagePartner.getPackingStation());  | 
|                             platformAccountInfoMapper.updatePlatformMoney(DoubleUtil.roundTwo(newAdminMoney.toString()));  | 
|                             platformAccountInfoMapper.updatePlatformHbb(DoubleUtil.roundTwo(newAdminhbb.toString()));  | 
|                             if (pAccount.getOverdraftLimit().equals(pAccount.getFixedLimit())||BusinessSimpleUtil.isEmptyOrZero(pAccount.getFixedLimit())) {  | 
|                                 PartnerAccountModel newPackage = new PartnerAccountModel();  | 
|                                 newPackage.setUserId(packagePartner.getUserId());  | 
|                                 newPackage.setHbb(DoubleUtil.roundTwo(newhbb.toString()));  | 
|                                 partnerAccountMapper.updatePartnerAccount(newPackage);  | 
|                                 insertPackageAccountLog(pAccount, payOrderId, payInfo.getMoney(), null, null);  | 
|                             } else {  | 
|                                 BigDecimal overdraftLimit = new BigDecimal(pAccount.getOverdraftLimit());  | 
|                                 BigDecimal fixLimit = new BigDecimal(pAccount.getFixedLimit());  | 
|                                 BigDecimal money = new BigDecimal(payInfo.getMoney());  | 
|                                 //固定额度-可用额度  | 
|                                 BigDecimal sfo = fixLimit.subtract(overdraftLimit);  | 
|                                 //用了的额度 和充值的钱 关系  | 
|                                 BigDecimal fla = sfo.subtract(money);  | 
|                                 BigDecimal fla1 = money.subtract(sfo);  | 
|   | 
|   | 
|                                 if (fla.compareTo(BigDecimal.ZERO) < 0) {  | 
|                                     //先把可用额度充满再充到环保币  | 
|                                     pAccount.setOverdraftLimit(pAccount.getFixedLimit());  | 
|                                     pAccount.setHbb(fla1.add(new BigDecimal(pAccount.getHbb())).toString());  | 
|                                     partnerAccountMapper.updatePartnerAccount(pAccount);  | 
|                                     insertPackageAccountLog(pAccount, payOrderId, payInfo.getMoney(), fla1, sfo);  | 
|                                 } else {  | 
|                                     //充值到可用额度里  | 
|                                     pAccount.setOverdraftLimit(DoubleUtil.roundTwo(overdraftLimit.add(money).toString()));  | 
|                                     partnerAccountMapper.updatePartnerAccount(pAccount);  | 
|                                     insertPackageAccountLog(pAccount, payOrderId, payInfo.getMoney(), null, null);  | 
|                                 }  | 
|   | 
|                             }  | 
|   | 
|                             PlatformAccountLogModel platformAccountLogModel = new PlatformAccountLogModel();  | 
|                             platformAccountLogModel.setCreateTime(DateUtil.now());  | 
|                             platformAccountLogModel.setCreateUserId(pAccount.getPartnerId());  | 
|                             platformAccountLogModel.setMoney(DoubleUtil.roundTwo(payInfo.getMoney()));  | 
|                             platformAccountLogModel.setHbb("-" + DoubleUtil.roundTwo(payInfo.getMoney()));  | 
|                             platformAccountLogModel.setOldHbb(DoubleUtil.roundTwo(oldAdminhbb.toString()));  | 
|                             platformAccountLogModel.setOldMoney(DoubleUtil.roundTwo(oldAdminMoney.toString()));  | 
|                             platformAccountLogModel.setNewHbb(DoubleUtil.roundTwo(newAdminhbb.toString()));  | 
|                             platformAccountLogModel.setNewMoney(DoubleUtil.roundTwo(newAdminMoney.toString()));  | 
|                             platformAccountLogModel.setCreateUserName(partner.getPartnerName());  | 
|                             platformAccountLogModel.setCreateUserType("2");  | 
|                             platformAccountLogModel.setCreateUserMobile(partner.getMobilePhone());  | 
|                             platformAccountLogModel.setFlowNo(payOrderId);  | 
|                             platformAccountLogMapper.insertPlatFormLog(platformAccountLogModel);  | 
|                             partnerAccountLogMapper.updateParterAccountLog(partnerAccountLogModel);  | 
|                         } else {  | 
|                             partnerAccountLogModel.setApproverStatus(PayEnum.审核不通过.getValue());  | 
|                         }  | 
|                     }  | 
|                 } else {  | 
|                     if (model.getStatus().equals(PayEnum.已审核.getValue())) {  | 
|                         updateOtherPayInfoPass(payInfo);  | 
|                         //平台  | 
|                         BigDecimal oldAdminMoney = new BigDecimal(adminMoney);  | 
|                         BigDecimal oldAdminhbb = new BigDecimal(adminhbb);  | 
|                         //平台账户处理充值  | 
|                         BigDecimal newAdminMoney = oldAdminMoney.add(new BigDecimal(payInfo.getMoney()));  | 
|                         BigDecimal newAdminhbb = oldAdminhbb.subtract(new BigDecimal(payInfo.getMoney()));  | 
|   | 
|                         UserModel user = otherUserMapper.queryUserOtherInfoById(payInfo.getCreateUserId());  | 
|                         String userName = "";  | 
|                         String mobilePhone = "";  | 
|                         if (null != user) {  | 
|                             userName = user.getName();  | 
|                             mobilePhone = user.getMobilePhone();  | 
|                         } else {  | 
|                             user = userMapper.queryUserById(payInfo.getCreateUserId());  | 
|                             userName = cn.hutool.core.codec.Base64.decodeStr(user.getNickName());  | 
|                             mobilePhone = user.getMobilePhone();  | 
|                         }  | 
|                         PlatformAccountLogModel platformAccountLogModel = new PlatformAccountLogModel();  | 
|                         platformAccountLogModel.setCreateTime(DateUtil.now());  | 
|                         platformAccountLogModel.setCreateUserId(payInfo.getCreateUserId());  | 
|                         platformAccountLogModel.setMoney(DoubleUtil.roundTwo(payInfo.getMoney()));  | 
|                         platformAccountLogModel.setHbb("-" + DoubleUtil.roundTwo(payInfo.getMoney()));  | 
|                         platformAccountLogModel.setOldHbb(DoubleUtil.roundTwo(oldAdminhbb.toString()));  | 
|                         platformAccountLogModel.setOldMoney(DoubleUtil.roundTwo(oldAdminMoney.toString()));  | 
|                         platformAccountLogModel.setNewHbb(DoubleUtil.roundTwo(newAdminhbb.toString()));  | 
|                         platformAccountLogModel.setNewMoney(DoubleUtil.roundTwo(newAdminMoney.toString()));  | 
|                         platformAccountLogModel.setCreateUserName(userName);  | 
|                         platformAccountLogModel.setCreateUserType("1");  | 
|                         platformAccountLogModel.setCreateUserMobile(mobilePhone);  | 
|                         platformAccountLogModel.setFlowNo(payOrderId);  | 
|                         platformAccountLogMapper.insertPlatFormLog(platformAccountLogModel);  | 
|                         platformAccountInfoMapper.updatePlatformMoney(DoubleUtil.roundTwo(newAdminMoney.toString()));  | 
|                         platformAccountInfoMapper.updatePlatformHbb(DoubleUtil.roundTwo(newAdminhbb.toString()));  | 
|                     } else {  | 
|                         partnerAccountLogModel.setApproverStatus(PayEnum.审核不通过.getValue());  | 
|                     }  | 
|                 }  | 
|             } catch (Exception e) {  | 
|                 ExceptionUtils.err("审核失败",e);  | 
|             }finally {  | 
|                 redisUtil.del(key);  | 
|             }  | 
|         }else {  | 
|             throw new RestException("请勿重复操作");  | 
|         }  | 
|     }  | 
|   | 
|     private void updateOtherPayInfoPass(PayInfoModel payInfo){  | 
|         UserAccountModel userAccountModel = accountMapper.getAccountByUserId(payInfo.getCreateUserId());  | 
|         //判断可用额度是否是固定额度  | 
|         String ovLimit =userAccountModel.getOverdraftLimit();  | 
|         String limitMoney = userAccountModel.getFixedLimit();  | 
|         BigDecimal money = new BigDecimal(userAccountModel.getMoney());  | 
|         BigDecimal bigOvlimit  = new BigDecimal("0");  | 
|         if(null!=ovLimit&&!"".equals(ovLimit)){  | 
|             bigOvlimit = new BigDecimal(ovLimit);  | 
|             BigDecimal bigLimitMoney = new BigDecimal(limitMoney);  | 
|             BigDecimal subMoney =bigLimitMoney.subtract(bigOvlimit);  | 
|             if(subMoney.compareTo(BigDecimal.ZERO)==0){  | 
|                 //全部加入用户余额  | 
|                 money = money.add(new BigDecimal(payInfo.getMoney()));  | 
|             }else{  | 
|                 BigDecimal adMoney = new BigDecimal(payInfo.getMoney()).subtract(subMoney);  | 
|                 if(adMoney.compareTo(BigDecimal.ZERO)==1){  | 
|                     money =   money.add(adMoney);  | 
|                     bigOvlimit = new BigDecimal(limitMoney);  | 
|                 }else if(adMoney.compareTo(BigDecimal.ZERO)==0){  | 
|                     bigOvlimit = new BigDecimal(limitMoney);  | 
|                 }else{  | 
|                     bigOvlimit = bigOvlimit.add(new BigDecimal(payInfo.getMoney()));  | 
|                 }  | 
|   | 
|             }  | 
|         }else{  | 
|             money=money.add(new BigDecimal(payInfo.getMoney()));  | 
|   | 
|         }  | 
|         //添加日志  | 
|         insertAccountLogByApp(userAccountModel,"1",money,DoubleUtil.roundTwo(bigOvlimit.toString()),payInfo.getPayOrderId());  | 
|         userAccountModel.setOverdraftLimit(DoubleUtil.roundTwo(bigOvlimit.toString()));  | 
|         userAccountModel.setMoney(Double.valueOf(DoubleUtil.roundTwo(money.toString())));  | 
|         accountMapper.updateUserAccount(userAccountModel);  | 
|     }  | 
|   | 
|     private void insertAccountLogByApp(UserAccountModel accountModel, String type, BigDecimal money,String newOv, String payOrderId) {  | 
|         //写入日志  | 
|         AccountLogModel log = new AccountLogModel();  | 
|         log.setAccountId(accountModel.getAccountId());  | 
|         log.setChannelType(type);  | 
|         log.setCreateTime(DateUtil.now());  | 
|         log.setCreateUserId(accountModel.getUserId());  | 
|         log.setNewFixedLimit(accountModel.getFixedLimit());  | 
|         log.setNewLimit(newOv);  | 
|         log.setNewMoney(DoubleUtil.roundTwo(money.toString()));  | 
|         log.setOldFixedLimit(accountModel.getFixedLimit());  | 
|         log.setOldLimit(accountModel.getOverdraftLimit());  | 
|         log.setOldMoney(DoubleUtil.roundTwo(accountModel.getMoney() + ""));  | 
|         log.setOrderId(payOrderId);  | 
|         accountLogMapper.insertAccountLog(log);  | 
|     }  | 
|   | 
|   | 
|     private 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("打包站");  | 
|         partnerAccountLogMapper.addPartnerAccountLog(partnerLog);  | 
|     }  | 
|   | 
|     public int insertPayRequestInfo(PayRequestInfo info){  | 
|         CoreUser user = sessionUtil.getCurrentUser();  | 
|         CityPartner partner = cityPartnerService.queryById(user.getId().toString());  | 
|         PartnerAccountLogModel log = new  PartnerAccountLogModel();  | 
|         log.setFlowNo(info.getPayOrderId());  | 
|         log.setCreateTime(DateUtil.now());  | 
|         log.setApproverStatus("1");  | 
|         log.setHbb(info.getMoney());  | 
|         log.setDelFlag(0);  | 
|         log.setAccountId(info.getAccountId());  | 
|         log.setUserName(info.getCreateUserId());  | 
|         log.setType("2");  | 
|         log.setUserPhone(partner.getMobilePhone());  | 
|         log.setRoleName("城市合伙人");  | 
|         partnerAccountLogMapper.addPartnerAccountLog(log);  | 
|         return payRequestMapper.insertPayRequestInfo(info);  | 
|     }  | 
|   | 
|     public Map<String, Object> queryDetailsPresentation(PartnerPayMsgModel model) {  | 
|         List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();  | 
|         model.setPartnerIds(partnerIds);  | 
|         Map<String, Object> map = new HashMap<>();  | 
|         model.setUserId(model.getUserId());  | 
|   | 
|         PageHelper.startPage(model.getPage(),model.getLimit());  | 
|         List<PartnerPayMsgModel> list = payRequestMapper.queryDetailsPresentation(model);  | 
|         for (PartnerPayMsgModel model1 : list  | 
|                 ) {  | 
|             model1.setMoney(DoubleUtil.roundTwo(model1.getMoney()));  | 
|         }  | 
|         PageInfo<PartnerPayMsgModel> pageInfo=new PageInfo<>(list);  | 
|         map.put("code", 0);  | 
|         map.put("data", list);  | 
|         map.put("count", pageInfo.getTotal());  | 
|         return map;  | 
|     }  | 
|   | 
|     public PageInfo<RkLimitDto> rkMessage(String userId, SimplePage simplePage) {  | 
|         PageHelper.startPage(simplePage.getPageNo(),simplePage.getPageSize());  | 
|         List<RkLimitDto> list=payRequestMapper.rkMessage(userId);  | 
|         if(CollUtil.isNotEmpty(list)){  | 
|             for (RkLimitDto rkLimitDto : list) {  | 
|                 Short msgType = rkLimitDto.getMsgType();  | 
|                 if(PayEnum.额度恢复.getValue().equals(msgType.toString())){  | 
|                     rkLimitDto.setMoney("+"+businessUtil.changeMoney(rkLimitDto.getMoney()));  | 
|                     if(PayEnum.待审核.getValue().equals(rkLimitDto.getStatus())){  | 
|                         rkLimitDto.setStatusName("审核中");  | 
|                     }else if(PayEnum.已审核完成.getValue().equals(rkLimitDto.getStatus())){  | 
|                         rkLimitDto.setStatusName("已审核");  | 
|                     }else if(PayEnum.审核不通过.getValue().equals(rkLimitDto.getStatus())){  | 
|                         rkLimitDto.setStatusName("审核不通过");  | 
|                     }  | 
|                 }else{  | 
|                     rkLimitDto.setMoney("-"+businessUtil.changeMoney(rkLimitDto.getMoney()));  | 
|                     rkLimitDto.setStatusName("已完成");  | 
|                 }  | 
|                 //修复时间  | 
| //                rkLimitDto.setCreateTime(DateUtil.format(DateUtil.parse(rkLimitDto.getCreateTime()),DateUtils.DATE_FORMAT_MD));  | 
|             }  | 
|         }  | 
|         PageInfo<RkLimitDto> pageInfo = new PageInfo<>(list);  | 
|         return pageInfo;  | 
|     }  | 
|   | 
|     public Result quotaRestore(String userId){  | 
|         PayRequestInfo info=new PayRequestInfo();  | 
|         info.setCreateUserId(userId);  | 
|         info.setPayType(PayEnum.额度恢复.getValue());  | 
|         info.setStatus(PayEnum.待审核.getValue());  | 
|         List<PayRequestInfo> select = payRequestMapper.select(info);  | 
|         if(CollUtil.isNotEmpty(select)){  | 
|             return Result.error(-1,"正在审核中,不能重复恢复");  | 
|         }  | 
|   | 
|         Result result=new Result();  | 
|         PayRequestInfo payRequestInfo=new PayRequestInfo();  | 
|         payRequestInfo.setCreateUserId(userId);  | 
|         AccountInfo accountInfo1 = accountService.findByUserId(userId);  | 
|         if(accountInfo1!=null){  | 
|             if(Convert.toBigDecimal(accountInfo1.getFixedLimit(),Constants.MONEY_INIT).compareTo(BigDecimal.ZERO)==0){  | 
|                 return Result.error(-1,"未设置固定额度");  | 
|             }else if(Convert.toBigDecimal(accountInfo1.getOverdraftLimit(),Constants.MONEY_INIT).compareTo(Convert.toBigDecimal(accountInfo1.getFixedLimit(),Constants.MONEY_INIT))>=0){  | 
|                 return Result.error(-1,"额度已充足");  | 
|             }  | 
|             payRequestInfo.setMoney(Convert.toStr(NumberUtil.sub(Convert.toBigDecimal(accountInfo1.getFixedLimit()),Convert.toBigDecimal(accountInfo1.getOverdraftLimit()))));  | 
|         }else{  | 
|             return Result.error(-1,"账户不存在");  | 
|         }  | 
|         payRequestInfo.setPayType(PayEnum.额度恢复.getValue());  | 
|         add(payRequestInfo);  | 
|         return result;  | 
|     }  | 
|   | 
|     /**  | 
|      * 审核  | 
|      * @param updateUserId  审核人id  | 
|      * @param payOrderId  流水号  | 
|      * @param reason  不通过原因  | 
|      */  | 
|     public void audit(String updateUserId,String payOrderId,String reason,String payType,String auditUserId,String money,String auditUserType){  | 
|         String now = DateUtil.now();  | 
|         PayRequestInfo payRequestInfo=new PayRequestInfo();  | 
|         payRequestInfo.setPayOrderId(payOrderId);  | 
|         payRequestInfo.setExamineTime(now);  | 
|         payRequestInfo.setUpdateTime(now);  | 
|         payRequestInfo.setUpdateUserId(updateUserId);  | 
|   | 
|         //驳回  | 
|         if(StrUtil.isNotBlank(reason)){  | 
|             payRequestInfo.setStatus(PayEnum.审核不通过.getValue());  | 
|             payRequestInfo.setUnpassReason(reason);  | 
|         }else {  | 
|             //同意  | 
|             payRequestInfo.setStatus(PayEnum.已审核完成.getValue());  | 
|   | 
|             //资金操作  | 
|             if(PayEnum.额度申请.getValue().equals(payType)){  | 
|                 accountService.increaseOverdraftLimit(auditUserId,Convert.toBigDecimal(money,BigDecimal.ZERO),payOrderId);  | 
|             }else if(PayEnum.额度恢复.getValue().equals(payType)){  | 
|                 accountService.restoreFix(auditUserId,payOrderId,auditUserType);  | 
|             }  | 
|         }  | 
|         payRequestMapper.updateByPrimaryKeySelective(payRequestInfo);  | 
|     }  | 
|   | 
|     public Map<String,Object> queryStorageMoneyApi(PayStorageModel model){  | 
|         List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();  | 
|         model.setPartnerIds(partnerIds);  | 
|         PageHelper.startPage(model.getPage(),model.getLimit());  | 
|         List<PayStorageModel> modelList = orderStorageInfoMapper.queryStorageMoneyApi(model);  | 
|         PageInfo<PayStorageModel> pageInfo=new PageInfo<>(modelList);  | 
|         Map<String,Object> remap = new HashMap<>();  | 
|   | 
|         //今日支出 日均支出 总支出  | 
|         PayStorageModel todayModel = new PayStorageModel();  | 
|         todayModel.setStartTime(DateUtil.today()+" 00:00:00");  | 
|         todayModel.setEndTime(DateUtil.today()+" 23:59:59");  | 
|         todayModel.setPartnerIds(partnerIds);  | 
|         String today = orderStorageInfoMapper.queryStorageMoneyToday(todayModel);  | 
|   | 
|         PayStorageModel todayModel1 = new PayStorageModel();  | 
|         todayModel1.setPartnerIds(partnerIds);  | 
|         String totalPay = orderStorageInfoMapper.queryStorageMoneyToday(todayModel1);  | 
|         //计算日均支出  | 
|         String endTimeStr = orderStorageInfoMapper.endStorageTime();  | 
|         int num = 0;  | 
|         BigDecimal avel = new BigDecimal("0");  | 
|         try {  | 
|             if(null!=endTimeStr&&!"".equals(endTimeStr)){  | 
|                 num = com.xzx.gc.util.DateUtil.daysBetween(endTimeStr,DateUtil.today());  | 
|   | 
|             }else{  | 
|                 num = 0 ;  | 
|             }  | 
|             if(null!=totalPay){  | 
|                 if(num!=0){  | 
|                     avel  = new BigDecimal(totalPay).divide(new BigDecimal(num), 2, RoundingMode.HALF_UP);  | 
|                 }else{  | 
|                     avel  = new BigDecimal(totalPay).divide(new BigDecimal("1"), 2, RoundingMode.HALF_UP);  | 
|                 }  | 
|             }else{  | 
|                 totalPay = "0";  | 
|             }  | 
|         } catch (ParseException e) {  | 
|             e.printStackTrace();  | 
|         }  | 
|         if(today==null){  | 
|             today="0";  | 
|         }  | 
|         remap.put("todayPay",today);  | 
|         remap.put("totalPay",totalPay);  | 
|         remap.put("averagePay",avel);  | 
|         if(null!=modelList&&modelList.size()>0){  | 
|             for (PayStorageModel resModel:modelList) {  | 
|                 if(!org.apache.commons.lang3.StringUtils.isEmpty(resModel.getStorageUserName())){  | 
|                     if(com.xzx.gc.util.DateUtil.isBase64(resModel.getStorageUserName())){  | 
|                         resModel.setStorageUserName(com.xzx.gc.common.utils.StringUtils.decode(resModel.getStorageUserName()));  | 
|   | 
|                     }else{  | 
|                         resModel.setStorageUserName(resModel.getStorageUserName());  | 
|                     }  | 
|                 }  | 
|             }  | 
|             remap.put("code",0);  | 
|             remap.put("data",modelList);  | 
|             remap.put("count",pageInfo.getTotal());  | 
|             remap.put("msg","返回成功");  | 
|         }else{  | 
|             remap.put("code",-1);  | 
|             remap.put("msg","没有记录");  | 
|         }  | 
|         return remap;  | 
|   | 
|     }  | 
|   | 
|     public Map<String,Object> queryStorageMoneyDetailApi(PayStorageModel model) {  | 
|         //查询订单列表  | 
|         String orderIds = orderStorageInfoMapper.queryUserOrderByStorageId(model.getStorageId());  | 
|         String[] orderIdList = orderIds.split(",");  | 
|         List<String> orderList = new ArrayList<>();  | 
|         for (String orderId:orderIdList) {  | 
|             orderList.add(orderId);  | 
|         }  | 
|         PageHelper.startPage(model.getPage(),model.getLimit());  | 
|         List<PayRequestInfoModel> list = orderMapper.queryStorageMoneyDetailApi(orderList);  | 
|         Map<String,Object> remap = new HashMap<>();  | 
|         for (PayRequestInfoModel model1:list) {  | 
|             model1.setMoney(DoubleUtil.roundTwo(model1.getMoney()));  | 
|             model1.setWeight(DoubleUtil.roundThree(model1.getWeight()));  | 
|         }  | 
|         List<Map<String,Object>> totalMap = orderMapper.queryMoneyAndWeightByOrderIds(orderList);  | 
|         BigDecimal totalmoney = new BigDecimal("0");  | 
|         for (Map<String,Object> mw:totalMap) {  | 
|             totalmoney = new BigDecimal(mw.get("money").toString()).add(totalmoney);  | 
|         }  | 
|         remap.put("totalmoney",totalmoney);  | 
|         remap.put("code",0);  | 
|         remap.put("data",list);  | 
|         remap.put("count",orderList.size());  | 
|         return remap;  | 
|     }  | 
|   | 
|     public Map<String,Object> quotaDetail(StorageUserModel model) {  | 
|         PageHelper.startPage(model.getPage(),model.getLimit());  | 
|         List<StorageUserModel> list = orderMapper.quotaDetail(model);  | 
|         PageInfo<StorageUserModel> pageInfo=new PageInfo<>(list);  | 
|         for (StorageUserModel stModel:list) {  | 
|             stModel.setMoney(DoubleUtil.roundTwo(stModel.getMoney()));  | 
|             stModel.setWeight(DoubleUtil.roundThree(stModel.getWeight()));  | 
|         }  | 
|         Map<String,Object> map = new HashMap<>();  | 
|         map.put("data",list);  | 
|         map.put("code",0);  | 
|         map.put("count",pageInfo.getTotal());  | 
|         return map;  | 
|     }  | 
|   | 
| }  |