From 734dfe9eb0a2176103dce8245c69b1194574c68e Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 29 七月 2024 20:16:15 +0800 Subject: [PATCH] 代理新功能完善 --- src/main/java/com/taoke/autopay/controller/admin/AdminAgentSettleController.java | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 162 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/taoke/autopay/controller/admin/AdminAgentSettleController.java b/src/main/java/com/taoke/autopay/controller/admin/AdminAgentSettleController.java index 6c5245c..bf9b538 100644 --- a/src/main/java/com/taoke/autopay/controller/admin/AdminAgentSettleController.java +++ b/src/main/java/com/taoke/autopay/controller/admin/AdminAgentSettleController.java @@ -1,12 +1,18 @@ package com.taoke.autopay.controller.admin; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; +import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.taoke.autopay.dao.agent.ChannelAgentMapper; import com.taoke.autopay.dao.agent.ChannelAgentSettleRecordMapper; +import com.taoke.autopay.dto.admin.AgentSettleExcelDataDto; +import com.taoke.autopay.dto.admin.OrderExcelDataDto; import com.taoke.autopay.entity.OrderChannelEnum; import com.taoke.autopay.entity.SystemConfigKeyEnum; import com.taoke.autopay.entity.agent.ChannelAgent; @@ -21,20 +27,30 @@ import com.taoke.autopay.service.agent.ChannelAgentSettingService; import com.taoke.autopay.service.agent.ChannelAgentSettleService; import com.taoke.autopay.service.agent.ChannelAgentSharingRatioService; +import com.taoke.autopay.utils.Constant; import com.taoke.autopay.utils.TimeUtil; import com.taoke.autopay.vo.admin.AdminChannelAgentVO; import com.taoke.autopay.vo.admin.AgentSearchVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import org.apache.commons.codec.digest.DigestUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.NumberUtil; import org.yeshi.utils.StringUtil; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Type; import java.math.BigDecimal; +import java.net.URLEncoder; import java.util.*; /** @@ -60,6 +76,20 @@ @Override public Date read(JsonReader in) throws IOException { return new Date(); + } + }).registerTypeAdapter(BigDecimal.class, new TypeAdapter<BigDecimal>() { + @Override + public void write(JsonWriter out, BigDecimal value) throws IOException { + if (value != null) { + out.value(value.toString()); + } else { + out.value(""); + } + } + + @Override + public BigDecimal read(JsonReader in) throws IOException { + return new BigDecimal("0.00"); } }).create(); @@ -106,4 +136,136 @@ return JsonUtil.loadFalseResult(e.getMessage()); } } + + /** + * @author hxh + * @description 鎻愮幇鍒楄〃 + * @date 13:14 2024/7/29 + * @param: key + * @param: startTime + * @param: endTime + * @param: status + * @param: page + * @param: limit + * @return java.lang.String + **/ + @ResponseBody + @RequestMapping("listWithdraw") + public String listWithdraw(String key, String startTime,String endTime, String status, int page, int limit) { + //鍏堟煡璇㈡墍鏈夌殑鏁版嵁 + ChannelAgentSettleRecordMapper.DaoQuery query = new ChannelAgentSettleRecordMapper.DaoQuery(); + query.agentId = !NumberUtil.isNumeric(key)?null:Long.parseLong(key); + query.minWithDrawApplyTime = StringUtil.isNullOrEmpty(startTime)?null:new Date(TimeUtil.convertToTimeTemp(startTime,"yyyy-MM-dd HH:mm:ss")); + query.maxWithDrawApplyTime = StringUtil.isNullOrEmpty(endTime)?null:new Date(TimeUtil.convertToTimeTemp(endTime,"yyyy-MM-dd HH:mm:ss")); + if(status==null||Integer.parseInt(status)<0){ + query.statusList=Arrays.asList(new Integer[]{ ChannelAgentSettleRecord.STATUS_WITHDRAWING,ChannelAgentSettleRecord.STATUS_WITHDRAW_SUCCESS,ChannelAgentSettleRecord.STATUS_WITHDRAW_REJECTED}); + }else{ + query.status=Integer.parseInt(status); + } + query.sortList = Arrays.asList(new String[]{"_withdraw_apply_time desc"}); + query.start = (long) (page - 1) * limit; + query.count = limit; + List<ChannelAgentSettleRecord> recordList = channelAgentSettleService.list(query); + long count = channelAgentSettleService.count(query); + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("list", gson.toJson(recordList)); + return JsonUtil.loadTrueResult(data); + } + + /** + * @author hxh + * @description + * @date 13:23 2024/7/29 + * @param: ids JSONARRAY + * @return java.lang.String + **/ + @ResponseBody + @RequestMapping("pass") + public String passWithdraw(String ids) { + if(StringUtil.isNullOrEmpty(ids)){ + return JsonUtil.loadFalseResult("璇蜂笂浼爄ds"); + } + Type type=new TypeToken<List<Long>>(){}.getType(); + try { + channelAgentSettleService.processWithdraw(gson.fromJson(ids,type), true); + return JsonUtil.loadTrueResult(""); + } catch (ChannelAgentSettleException e) { + return JsonUtil.loadFalseResult(e.getMessage()); + } + } + + @ResponseBody + @RequestMapping("reject") + public String rejectWithdraw(String ids) { + if(StringUtil.isNullOrEmpty(ids)){ + return JsonUtil.loadFalseResult("璇蜂笂浼爄ds"); + } + Type type=new TypeToken<List<Long>>(){}.getType(); + try { + channelAgentSettleService.processWithdraw(gson.fromJson(ids,type), false); + return JsonUtil.loadTrueResult(""); + } catch (ChannelAgentSettleException e) { + return JsonUtil.loadFalseResult(e.getMessage()); + } + } + + + + @RequestMapping("downloadSettleTable") + public void downloadSettleTable(String day, HttpServletResponse response) throws IOException { + ChannelAgentSettleRecordMapper.DaoQuery daoQuery=new ChannelAgentSettleRecordMapper.DaoQuery(); + daoQuery.settleDay = day; + daoQuery.count = 10000; + daoQuery.status = ChannelAgentSettleRecord.STATUS_NOT_SETTLE; + List<ChannelAgentSettleRecord> list = channelAgentSettleService.list(daoQuery); + + List<AgentSettleExcelDataDto> dataList=new ArrayList<>(); + for(ChannelAgentSettleRecord record:list){ + AgentSettleExcelDataDto dto=AgentSettleExcelDataDto.builder() + .id(record.getId()) + .agentId(record.getAgentId()) + .actualSettleMoney(record.getSettleMoney().toString()) + .settleMoney(record.getSettleMoney().toString()) + .day(record.getSettleDay()) + .build(); + dataList.add(dto); + } + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName="settle_"+URLEncoder.encode(TimeUtil.getGernalTime(System.currentTimeMillis(),"yyyyMMdd_HHmmss"),"UTF-8"); + response.setHeader("Content-disposition","attachment;filename*=utf-8''"+fileName+".xlsx"); + EasyExcel.write(response.getOutputStream(),AgentSettleExcelDataDto.class).sheet("缁撶畻纭鍗�").doWrite(dataList); + } + + + @ResponseBody + @RequestMapping("uploadSettleExcel") + public String uploadImg(@RequestParam("file") MultipartFile file, HttpSession session) throws IOException { + InputStream inputStream = file.getInputStream(); + EasyExcel.read(inputStream, AgentSettleExcelDataDto.class, new ReadListener<AgentSettleExcelDataDto>() { + @Override + public void invoke(AgentSettleExcelDataDto o, AnalysisContext analysisContext) { + System.out.println("璇诲彇鍒版暟鎹�: " + o.getDay()); + try { + channelAgentSettleService.actualSettle(o.getId(),new BigDecimal(o.getActualSettleMoney())); + } catch (ChannelAgentSettleException e) { + e.printStackTrace(); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + + } + }).sheet().doRead(); + return JsonUtil.loadTrueResult(""); + } + + + + + } -- Gitblit v1.8.0