Просмотр исходного кода

Merge branch 'update_bills' of lianghanqiang/ldt into dev

July 4 лет назад
Родитель
Сommit
d62edb6e06

+ 64 - 0
ldt-core/src/main/java/org/springblade/common/utils/BeanPropertyUtil.java

@@ -0,0 +1,64 @@
+package org.springblade.common.utils;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.Serializable;
+import java.lang.invoke.SerializedLambda;
+import java.lang.reflect.Method;
+import java.util.function.Function;
+
+/**
+ * @Author: Silent
+ * @Description
+ * @Date: Created in 15:58 2021/11/4
+ * @Modified By:
+ */
+public interface BeanPropertyUtil<T, R> extends Function<T, R>, Serializable {
+
+	/**
+	 * 获取字段
+	 * @param func
+	 * @param <T>
+	 * @return
+	 */
+	static <T,R> String getFieldName(BeanPropertyUtil<T, R> func) {
+		try {
+			// 通过获取对象方法,判断是否存在该方法
+			Method method = func.getClass().getDeclaredMethod("writeReplace");
+			method.setAccessible(Boolean.TRUE);
+			// 利用jdk的SerializedLambda 解析方法引用
+			java.lang.invoke.SerializedLambda serializedLambda = (SerializedLambda) method.invoke(func);
+			String getter = serializedLambda.getImplMethodName();
+			return resolveFieldName(getter);
+		} catch (ReflectiveOperationException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	/**
+	 * 解析字段名
+	 * @param getMethodName
+	 * @return
+	 */
+	static String resolveFieldName(String getMethodName) {
+		if (getMethodName.startsWith("get")) {
+			getMethodName = getMethodName.substring(3);
+		} else if (getMethodName.startsWith("is")) {
+			getMethodName = getMethodName.substring(2);
+		}
+		// 小写第一个字母
+		return firstToLowerCase(getMethodName);
+	}
+
+	/**
+	 * 小写转化
+	 * @param param
+	 * @return
+	 */
+	static String firstToLowerCase(String param) {
+		if (StringUtils.isBlank(param)) {
+			return "";
+		}
+		return param.substring(0, 1).toLowerCase() + param.substring(1);
+	}
+}

+ 75 - 0
ldt-core/src/main/java/org/springblade/common/utils/ExcelWriteUtil.java

@@ -0,0 +1,75 @@
+package org.springblade.common.utils;
+
+import cn.hutool.poi.excel.ExcelUtil;
+import cn.hutool.poi.excel.ExcelWriter;
+import lombok.Cleanup;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.reflect.FieldUtils;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author: Silent
+ * @Description
+ * @Date: Created in 10:51 2021/11/3
+ * @Modified By:
+ */
+@Slf4j
+public class ExcelWriteUtil {
+
+	/**
+	 * 写入Excel数据到流
+	 *
+	 * @param response   Http响应
+	 * @param fileName   文件名
+	 * @param excelTitle excel标题
+	 * @param titleMap   标题头
+	 * @param list       列表
+	 */
+	public static <T> void writeToResponse(final HttpServletResponse response, final String fileName, final String excelTitle, final Map<String, String> titleMap, final List<T> list, final Class<T> tClass) {
+		try {
+			@Cleanup ExcelWriter writer = ExcelUtil.getWriter();
+			//写入标题
+			writer.merge(titleMap.size() - 1, excelTitle);
+			//写入标题解释
+			int i = 0;
+			for (T ele : list) {
+				Map<String, Object> keyValueMap = new HashMap<>();
+				//获取解释值
+				for (Map.Entry<String, String> entry : titleMap.entrySet()) {
+					try {
+						//获取字段值
+						Field declaredField = FieldUtils.getDeclaredField(tClass, entry.getKey(),true);
+						if(ObjectUtils.isEmpty(declaredField)){
+							declaredField = FieldUtils.getField(tClass, entry.getKey(),true);
+						}
+						//允许私有变量获取
+						keyValueMap.put(entry.getValue(), declaredField.get(ele));
+					} catch (Exception e) {
+						keyValueMap.put(entry.getValue(), "");
+						log.debug(e.getMessage());
+					}
+				}
+				//写入数据
+				if (i == 0) {
+					writer.writeRow(keyValueMap, true);
+				} else {
+					writer.writeRow(keyValueMap, false);
+				}
+				i++;
+			}
+			//设置响应头
+			response.setHeader("Content-Disposition", String.format("attachment;filename=%s%s", fileName, ".xls"));
+			@Cleanup ServletOutputStream outputStream = response.getOutputStream();
+			writer.flush(outputStream);
+		} catch (Exception e) {
+			log.error(e.getMessage());
+		}
+	}
+}

+ 111 - 111
ldt-core/src/main/java/org/springblade/common/utils/TenantIgnoreUtil.java

@@ -31,274 +31,274 @@ import java.util.function.Function;
  */
 @Component
 @TenantIgnore
-public class TenantIgnoreUtil<T extends BaseService<E>,E extends BaseEntity> {
+public class TenantIgnoreUtil<S extends BaseService<T>,T extends BaseEntity>{
 
 	@TenantIgnore
-	public boolean deleteLogic(T t, @NotEmpty List ids) {
-		return t.deleteLogic(ids);
+	public boolean deleteLogic(S s, @NotEmpty List ids) {
+		return s.deleteLogic(ids);
 	}
 
 	@TenantIgnore
-	public boolean changeStatus(T t, @NotEmpty List ids, Integer status) {
-		return t.changeStatus(ids, status);
+	public boolean changeStatus(S s, @NotEmpty List ids, Integer status) {
+		return s.changeStatus(ids, status);
 	}
 
 	@TenantIgnore
-	public boolean save(T t, E entity) {
-		return t.save(entity);
+	public boolean save(S s, T entity) {
+		return s.save(entity);
 	}
 
 	@TenantIgnore
-	public boolean saveBatch(T t, Collection entityList) {
-		return t.saveBatch(entityList);
+	public boolean saveBatch(S s, Collection entityList) {
+		return s.saveBatch(entityList);
 	}
 
 	@TenantIgnore
-	public boolean saveBatch(T t, Collection entityList, int batchSize) {
-		return t.saveBatch(entityList, batchSize);
+	public boolean saveBatch(S s, Collection entityList, int batchSize) {
+		return s.saveBatch(entityList, batchSize);
 	}
 
 	@TenantIgnore
-	public boolean saveOrUpdateBatch(T t, Collection entityList) {
-		return t.saveOrUpdateBatch(entityList);
+	public boolean saveOrUpdateBatch(S s, Collection entityList) {
+		return s.saveOrUpdateBatch(entityList);
 	}
 
 	@TenantIgnore
-	public boolean saveOrUpdateBatch(T t, Collection entityList, int batchSize) {
-		return t.saveOrUpdateBatch(entityList, batchSize);
+	public boolean saveOrUpdateBatch(S s, Collection entityList, int batchSize) {
+		return s.saveOrUpdateBatch(entityList, batchSize);
 	}
 
 	@TenantIgnore
-	public boolean removeById(T t, Serializable id) {
-		return t.removeById(id);
+	public boolean removeById(S s, Serializable id) {
+		return s.removeById(id);
 	}
 
 	@TenantIgnore
-	public boolean remove(T t, Wrapper queryWrapper) {
-		return t.remove(queryWrapper);
+	public boolean remove(S s, Wrapper queryWrapper) {
+		return s.remove(queryWrapper);
 	}
 
 	@TenantIgnore
-	public boolean updateById(T t, E entity) {
-		return t.updateById(entity);
+	public boolean updateById(S s, T entity) {
+		return s.updateById(entity);
 	}
 
 	@TenantIgnore
-	public boolean update(T t, Wrapper updateWrapper) {
-		return t.update(updateWrapper);
+	public boolean update(S s, Wrapper updateWrapper) {
+		return s.update(updateWrapper);
 	}
 
 	@TenantIgnore
-	public boolean update(T t, E entity, Wrapper updateWrapper) {
-		return t.update(entity, updateWrapper);
+	public boolean update(S s, T entity, Wrapper updateWrapper) {
+		return s.update(entity, updateWrapper);
 	}
 
 	@TenantIgnore
-	public boolean updateBatchById(T t, Collection entityList) {
-		return t.updateBatchById(entityList);
+	public boolean updateBatchById(S s, Collection entityList) {
+		return s.updateBatchById(entityList);
 	}
 
 	@TenantIgnore
-	public boolean removeByIds(T t, Collection idList) {
-		return t.removeByIds(idList);
+	public boolean removeByIds(S s, Collection idList) {
+		return s.removeByIds(idList);
 	}
 
 	@TenantIgnore
-	public boolean removeByMap(T t, Map columnMap) {
-		return t.removeByMap(columnMap);
+	public boolean removeByMap(S s, Map columnMap) {
+		return s.removeByMap(columnMap);
 	}
 
 	@TenantIgnore
-	public boolean updateBatchById(T t, Collection entityList, int batchSize) {
-		return t.updateBatchById(entityList, batchSize);
+	public boolean updateBatchById(S s, Collection entityList, int batchSize) {
+		return s.updateBatchById(entityList, batchSize);
 	}
 
 	@TenantIgnore
-	public boolean saveOrUpdate(T t, E entity) {
-		return t.saveOrUpdate(entity);
+	public boolean saveOrUpdate(S s, T entity) {
+		return s.saveOrUpdate(entity);
 	}
 
 	@TenantIgnore
-	public E getById(T t, Serializable id) {
-		return t.getById(id);
+	public T getById(S s, Serializable id) {
+		return s.getById(id);
 	}
 
 	@TenantIgnore
-	public E getOne(T t, Wrapper<E> queryWrapper) {
-		return t.getOne(queryWrapper);
+	public T getOne(S s, Wrapper<T> queryWrapper) {
+		return s.getOne(queryWrapper);
 	}
 
 	@TenantIgnore
-	public List listByMap(T t, Map columnMap) {
-		return t.listByMap(columnMap);
+	public List listByMap(S s, Map columnMap) {
+		return s.listByMap(columnMap);
 	}
 
 	@TenantIgnore
-	public List listByIds(T t, Collection idList) {
-		return t.listByIds(idList);
+	public List listByIds(S s, Collection idList) {
+		return s.listByIds(idList);
 	}
 
 	@TenantIgnore
-	public E getOne(T t, Wrapper<E> queryWrapper, boolean throwEx) {
-		return t.getOne(queryWrapper, throwEx);
+	public T getOne(S s, Wrapper<T> queryWrapper, boolean throwEx) {
+		return s.getOne(queryWrapper, throwEx);
 	}
 
 	@TenantIgnore
-	public Map<String, Object> getMap(T t, Wrapper<E> queryWrapper) {
-		return t.getMap(queryWrapper);
+	public Map<String, Object> getMap(S s, Wrapper<T> queryWrapper) {
+		return s.getMap(queryWrapper);
 	}
 
 	@TenantIgnore
-	public int count(T t) {
-		return t.count();
+	public int count(S s) {
+		return s.count();
 	}
 
 	@TenantIgnore
-	public int count(T t, Wrapper queryWrapper) {
-		return t.count(queryWrapper);
+	public int count(S s, Wrapper queryWrapper) {
+		return s.count(queryWrapper);
 	}
 
 	@TenantIgnore
-	public List list(T t, Wrapper queryWrapper) {
-		return t.list(queryWrapper);
+	public List list(S s, Wrapper queryWrapper) {
+		return s.list(queryWrapper);
 	}
 
 	@TenantIgnore
-	public List list(T t) {
-		return t.list();
+	public List list(S s) {
+		return s.list();
 	}
 
 	@TenantIgnore
-	public List<Map<String, Object>> listMaps(T t, Wrapper queryWrapper) {
-		return t.listMaps(queryWrapper);
+	public List<Map<String, Object>> listMaps(S s, Wrapper queryWrapper) {
+		return s.listMaps(queryWrapper);
 	}
 
 	@TenantIgnore
-	public List<Map<String, Object>> listMaps(T t) {
-		return t.listMaps();
+	public List<Map<String, Object>> listMaps(S s) {
+		return s.listMaps();
 	}
 
 	@TenantIgnore
-	public List<Object> listObjs(T t) {
-		return t.listObjs();
+	public List<Object> listObjs(S s) {
+		return s.listObjs();
 	}
 
 	@TenantIgnore
-	public List<E> listObjs(T t, Wrapper queryWrapper) {
-		return t.listObjs(queryWrapper);
+	public List<T> listObjs(S s, Wrapper queryWrapper) {
+		return s.listObjs(queryWrapper);
 	}
 
 	@TenantIgnore
-	public <P extends IPage<Map<String, Object>>> P pageMaps(T t, P page) {
-		return t.pageMaps(page);
+	public <P extends IPage<Map<String, Object>>> P pageMaps(S s, P page) {
+		return s.pageMaps(page);
 	}
 
 	@TenantIgnore
-	public <P extends IPage<Map<String, Object>>> P pageMaps(T t, P page, Wrapper<E> queryWrapper) {
-		return t.pageMaps(page, queryWrapper);
+	public <P extends IPage<Map<String, Object>>> P pageMaps(S s, P page, Wrapper<T> queryWrapper) {
+		return s.pageMaps(page, queryWrapper);
 	}
 
 	@TenantIgnore
-	public List listObjs(T t, Wrapper queryWrapper, Function mapper) {
-		return t.listObjs(queryWrapper, mapper);
+	public List listObjs(S s, Wrapper queryWrapper, Function mapper) {
+		return s.listObjs(queryWrapper, mapper);
 	}
 
 	@TenantIgnore
-	public List listObjs(T t, Function mapper) {
-		return t.listObjs(mapper);
+	public List listObjs(S s, Function mapper) {
+		return s.listObjs(mapper);
 	}
 
 	@TenantIgnore
-	public <P extends IPage<E>> P page(T t, P page) {
-		return t.page(page);
+	public <P extends IPage<T>> P page(S s, P page) {
+		return s.page(page);
 	}
 
 	@TenantIgnore
-	public <P extends IPage<E>> P page(T t, P page, Wrapper<E> queryWrapper) {
-		return t.page(page, queryWrapper);
+	public <P extends IPage<T>> P page(S s, P page, Wrapper<T> queryWrapper) {
+		return s.page(page, queryWrapper);
 	}
 
 	@TenantIgnore
-	public BaseMapper getBaseMapper(T t) {
-		return t.getBaseMapper();
+	public BaseMapper getBaseMapper(S s) {
+		return s.getBaseMapper();
 	}
 
 	@TenantIgnore
-	public Class getEntityClass(T t) {
-		return t.getEntityClass();
+	public Class getEntityClass(S s) {
+		return s.getEntityClass();
 	}
 
 	@TenantIgnore
-	public QueryChainWrapper query(T t) {
-		return t.query();
+	public QueryChainWrapper query(S s) {
+		return s.query();
 	}
 
 	@TenantIgnore
-	public LambdaQueryChainWrapper lambdaQuery(T t) {
-		return t.lambdaQuery();
+	public LambdaQueryChainWrapper lambdaQuery(S s) {
+		return s.lambdaQuery();
 	}
 
 	@TenantIgnore
-	public KtQueryChainWrapper ktQuery(T t) {
-		return t.ktQuery();
+	public KtQueryChainWrapper ktQuery(S s) {
+		return s.ktQuery();
 	}
 
 	@TenantIgnore
-	public KtUpdateChainWrapper ktUpdate(T t) {
-		return t.ktUpdate();
+	public KtUpdateChainWrapper ktUpdate(S s) {
+		return s.ktUpdate();
 	}
 
 	@TenantIgnore
-	public UpdateChainWrapper update(T t) {
-		return t.update();
+	public UpdateChainWrapper update(S s) {
+		return s.update();
 	}
 
 	@TenantIgnore
-	public LambdaUpdateChainWrapper lambdaUpdate(T t) {
-		return t.lambdaUpdate();
+	public LambdaUpdateChainWrapper lambdaUpdate(S s) {
+		return s.lambdaUpdate();
 	}
 
 	@TenantIgnore
-	public boolean saveOrUpdate(T t, E entity, Wrapper updateWrapper) {
-		return t.saveOrUpdate(entity, updateWrapper);
+	public boolean saveOrUpdate(S s, T entity, Wrapper updateWrapper) {
+		return s.saveOrUpdate(entity, updateWrapper);
 	}
 
 	@TenantIgnore
-	public Object getObj(T t, Wrapper<E> queryWrapper, Function mapper) {
-		return t.getObj(queryWrapper, mapper);
+	public Object getObj(S s, Wrapper<T> queryWrapper, Function mapper) {
+		return s.getObj(queryWrapper, mapper);
 	}
 
 	/**
 	 * 通过反射代理执行
-	 * @param t
+	 * @param s
 	 * @param funName
 	 * @param tClass
 	 * @param Es
 	 * @return
 	 */
 	@TenantIgnore
-	public Object invoke(T t,String funName,Class<T> tClass,Object... Es){
+	public Object invoke(S s,String funName,Class<S> tClass,Object... Es){
 		try {
-			Method declaredMethod = t.getClass().getDeclaredMethod(funName,tClass);
-			return declaredMethod.invoke(t,Es);
-		} catch (NoSuchMethodException e) {
-			e.printStackTrace();
-		} catch (InvocationTargetException e) {
-			e.printStackTrace();
-		} catch (IllegalAccessException e) {
-			e.printStackTrace();
+			Method declaredMethod = s.getClass().getDeclaredMethod(funName,tClass);
+			return declaredMethod.invoke(s,Es);
+		} catch (NoSuchMethodException t) {
+			t.printStackTrace();
+		} catch (InvocationTargetException t) {
+			t.printStackTrace();
+		} catch (IllegalAccessException t) {
+			t.printStackTrace();
 		}
 		return null;
 	}
 
 	@TenantIgnore
-	public Object invoke(T t,Method method,Object... Es){
+	public Object invoke(S s,Method method,Object... Es){
 		try {
-			return method.invoke(t,Es);
-		} catch (InvocationTargetException e) {
-			e.printStackTrace();
-		} catch (IllegalAccessException e) {
-			e.printStackTrace();
+			return method.invoke(s,Es);
+		} catch (InvocationTargetException t) {
+			t.printStackTrace();
+		} catch (IllegalAccessException t) {
+			t.printStackTrace();
 		}
 		return null;
 	}

+ 43 - 2
ldt-core/src/main/java/org/springblade/ldt/bills/controller/BalanceBillsController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.ldt.bills.controller;
 
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -23,16 +25,19 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.common.aop.core.TenantAop;
 import org.springblade.common.constant.Salesman;
 import org.springblade.common.enums.AppConstant;
+import org.springblade.common.utils.ExcelWriteUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.ldt.bills.entity.BalanceBills;
-import org.springblade.ldt.bills.entity.Bills;
 import org.springblade.ldt.bills.service.IBalanceBillsService;
 import org.springblade.ldt.bills.vo.BalanceBillsVO;
 import org.springblade.ldt.bills.wrapper.BalanceBillsWrapper;
@@ -41,6 +46,7 @@ import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.ldt.user.service.ILoginUserService;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
@@ -56,6 +62,7 @@ import java.util.Map;
 @AllArgsConstructor
 @RequestMapping("ldt_bills/balancebills")
 @Api(value = "", tags = "接口")
+@Slf4j
 public class BalanceBillsController extends BladeController {
 
 	private final IBalanceBillsService balanceBillsService;
@@ -84,16 +91,50 @@ public class BalanceBillsController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入balanceBills")
 	@TenantAop(salesman=Salesman.roleName)
-	public R<IPage<BalanceBillsVO>> list(BalanceBills balanceBills, Query query, Date createTimeStart, Date createTimeEnd) {
+	public R<IPage<BalanceBillsVO>> list(BalanceBills balanceBills, Query query, Date createTimeStart, Date createTimeEnd,String key) {
 		QueryWrapper<BalanceBills> queryWrapper = Condition.getQueryWrapper(balanceBills);
 		//添加创建时间条件
 		if(createTimeStart!=null && createTimeEnd!=null){
 			queryWrapper.lambda().between(BalanceBills::getCreateTime,createTimeStart,createTimeEnd);
 		}
+		//添加关键字key查询条件
+		if (StringUtils.isNotBlank(key)) {
+			queryWrapper.lambda().and(wq -> {
+				wq.eq(BalanceBills::getId, key);
+			});
+		}
 		//循环查询
 		return R.data(BalanceBillsWrapper.build(loginUserService,shopService,mallService).pageVO(balanceBillsService.page(Condition.getPage(query), queryWrapper)));
 	}
 
+	/**
+	 * 生成列表
+	 */
+	@PostMapping("/generateList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "生成列表", notes = "传入withdrawRec")
+	@TenantAop(salesman = Salesman.roleName)
+	public void generateList(BalanceBills balanceBills, Query query, Date createTimeStart, Date createTimeEnd,
+							 String key,
+							 @RequestParam String keyValue,
+							 HttpServletResponse response) {
+		try {
+			R<IPage<BalanceBillsVO>> page = this.list(balanceBills, query, createTimeStart, createTimeEnd, key);
+			//判断是否为空
+			if (ObjectUtils.isNotEmpty(page) && ObjectUtils.isNotEmpty(page.getData()) && ObjectUtils.isNotEmpty(page.getData().getRecords())) {
+				//键值对
+				Map<String, String> titleMap = JSONObject.parseObject(keyValue, Map.class);
+				if (ObjectUtils.isNotEmpty(titleMap)) {
+					//写入到Excel
+					ExcelWriteUtil.writeToResponse(response, DateUtil.now(), "提现记录表", titleMap, page.getData().getRecords(), BalanceBillsVO.class);
+					return;
+				}
+			}
+		} catch (Exception e) {
+			log.error(e.getMessage());
+		}
+	}
+
 	/**
 	 * 统计金额
 	 */

+ 43 - 2
ldt-core/src/main/java/org/springblade/ldt/bills/controller/BillsController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.ldt.bills.controller;
 
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -23,10 +25,13 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.common.aop.core.TenantAop;
 import org.springblade.common.constant.Salesman;
 import org.springblade.common.enums.AppConstant;
-import org.springblade.common.utils.TenantIgnoreUtil;
+import org.springblade.common.utils.ExcelWriteUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -41,6 +46,7 @@ import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.ldt.user.service.ILoginUserService;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
@@ -56,6 +62,7 @@ import java.util.Map;
 @AllArgsConstructor
 @RequestMapping("ldt_bills/bills")
 @Api(value = "", tags = "接口")
+@Slf4j
 public class BillsController extends BladeController {
 
 	private final IBillsService billsService;
@@ -84,15 +91,49 @@ public class BillsController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入bills")
 	@TenantAop(salesman = Salesman.roleName)
-	public R<IPage<BillsVO>> list(Bills bills, Query query, Date createTimeStart, Date createTimeEnd) {
+	public R<IPage<BillsVO>> list(Bills bills, Query query, Date createTimeStart, Date createTimeEnd, String key) {
 		QueryWrapper<Bills> queryWrapper = Condition.getQueryWrapper(bills);
 		//添加创建时间条件
 		if (createTimeStart != null && createTimeEnd != null) {
 			queryWrapper.lambda().between(Bills::getCreateTime, createTimeStart, createTimeEnd);
 		}
+		//添加关键字key查询条件
+		if (StringUtils.isNotBlank(key)) {
+			queryWrapper.lambda().and(wq -> {
+				wq.eq(Bills::getId, key);
+			});
+		}
 		return R.data(BillsWrapper.build(loginUserService, shopService, mallService).pageVO(billsService.page(Condition.getPage(query), queryWrapper)));
 	}
 
+	/**
+	 * 生成列表
+	 */
+	@PostMapping("/generateList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "生成列表", notes = "传入withdrawRec")
+	@TenantAop(salesman = Salesman.roleName)
+	public void generateList(Bills bills, Query query, Date createTimeStart, Date createTimeEnd,
+							 String key,
+							 @RequestParam String keyValue,
+							 HttpServletResponse response) {
+		try {
+			R<IPage<BillsVO>> page = this.list(bills, query, createTimeStart, createTimeEnd, key);
+			//判断是否为空
+			if (ObjectUtils.isNotEmpty(page) && ObjectUtils.isNotEmpty(page.getData()) && ObjectUtils.isNotEmpty(page.getData().getRecords())) {
+				//键值对
+				Map<String, String> titleMap = JSONObject.parseObject(keyValue, Map.class);
+				if (ObjectUtils.isNotEmpty(titleMap)) {
+					//写入到Excel
+					ExcelWriteUtil.writeToResponse(response, DateUtil.now(), "提现记录表", titleMap, page.getData().getRecords(), BillsVO.class);
+					return;
+				}
+			}
+		} catch (Exception e) {
+			log.error(e.getMessage());
+		}
+	}
+
 	/**
 	 * 统计金额
 	 */

+ 52 - 7
ldt-core/src/main/java/org/springblade/ldt/bills/controller/PlatformBillsController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.ldt.bills.controller;
 
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -23,6 +25,12 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.common.aop.core.TenantAop;
+import org.springblade.common.constant.Salesman;
+import org.springblade.common.utils.ExcelWriteUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -37,13 +45,14 @@ import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.ldt.user.service.ILoginUserService;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 /**
- *  控制器
+ * 控制器
  *
  * @author BladeX
  * @since 2021-09-23
@@ -52,6 +61,7 @@ import java.util.Map;
 @AllArgsConstructor
 @RequestMapping("ldt_bills/platformbills")
 @Api(value = "", tags = "接口")
+@Slf4j
 public class PlatformBillsController extends BladeController {
 
 	private final IPlatformBillsService platformBillsService;
@@ -70,7 +80,7 @@ public class PlatformBillsController extends BladeController {
 	@ApiOperation(value = "详情", notes = "传入platformBills")
 	public R<PlatformBillsVO> detail(PlatformBills platformBills) {
 		PlatformBills detail = platformBillsService.getOne(Condition.getQueryWrapper(platformBills));
-		return R.data(PlatformBillsWrapper.build(loginUserService,shopService,mallService).entityVO(detail));
+		return R.data(PlatformBillsWrapper.build(loginUserService, shopService, mallService).entityVO(detail));
 	}
 
 	/**
@@ -79,13 +89,48 @@ public class PlatformBillsController extends BladeController {
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入platformBills")
-	public R<IPage<PlatformBillsVO>> list(PlatformBills platformBills, Query query, Date createTimeStart,Date createTimeEnd) {
+	public R<IPage<PlatformBillsVO>> list(PlatformBills platformBills, Query query, Date createTimeStart, Date createTimeEnd,
+											String key) {
 		QueryWrapper<PlatformBills> queryWrapper = Condition.getQueryWrapper(platformBills);
 		//添加创建时间条件
-		if(createTimeStart!=null && createTimeEnd!=null){
-			queryWrapper.lambda().between(PlatformBills::getCreateTime,createTimeStart,createTimeEnd);
+		if (createTimeStart != null && createTimeEnd != null) {
+			queryWrapper.lambda().between(PlatformBills::getCreateTime, createTimeStart, createTimeEnd);
+		}
+		//添加关键字key查询条件
+		if (StringUtils.isNotBlank(key)) {
+			queryWrapper.lambda().and(wq -> {
+				wq.eq(PlatformBills::getId, key);
+			});
+		}
+		return R.data(PlatformBillsWrapper.build(loginUserService, shopService, mallService).pageVO(platformBillsService.page(Condition.getPage(query), queryWrapper)));
+	}
+
+	/**
+	 * 生成列表
+	 */
+	@PostMapping("/generateList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "生成列表", notes = "传入withdrawRec")
+	@TenantAop(salesman = Salesman.roleName)
+	public void generateList(PlatformBills platformBills, Query query, Date createTimeStart, Date createTimeEnd,
+							 String key,
+							 @RequestParam String keyValue,
+							 HttpServletResponse response) {
+		try {
+			R<IPage<PlatformBillsVO>> page = this.list(platformBills, query, createTimeStart, createTimeEnd, key);
+			//判断是否为空
+			if (ObjectUtils.isNotEmpty(page) && ObjectUtils.isNotEmpty(page.getData()) && ObjectUtils.isNotEmpty(page.getData().getRecords())) {
+				//键值对
+				Map<String, String> titleMap = JSONObject.parseObject(keyValue, Map.class);
+				if (ObjectUtils.isNotEmpty(titleMap)) {
+					//写入到Excel
+					ExcelWriteUtil.writeToResponse(response, DateUtil.now(), "提现记录表", titleMap, page.getData().getRecords(), PlatformBillsVO.class);
+					return;
+				}
+			}
+		} catch (Exception e) {
+			log.error(e.getMessage());
 		}
-		return R.data(PlatformBillsWrapper.build(loginUserService,shopService,mallService).pageVO(platformBillsService.page(Condition.getPage(query), queryWrapper)));
 	}
 
 
@@ -95,7 +140,7 @@ public class PlatformBillsController extends BladeController {
 	@GetMapping("/censusPrice")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "统计金额", notes = "统计金额")
-	public R<List<Map<String,Object>>> censusPrice() {
+	public R<List<Map<String, Object>>> censusPrice() {
 		return R.data(platformBillsService.listMaps(new QueryWrapper<PlatformBills>()
 			.select("sum(fee) as price,type as type")
 			.lambda().groupBy(PlatformBills::getType)));

+ 41 - 1
ldt-core/src/main/java/org/springblade/ldt/bills/controller/PointBillsController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.ldt.bills.controller;
 
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -24,8 +26,11 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.common.aop.core.TenantAop;
 import org.springblade.common.constant.Salesman;
+import org.springblade.common.utils.ExcelWriteUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -42,8 +47,10 @@ import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.ldt.user.service.ILoginUserService;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.Date;
+import java.util.Map;
 
 /**
  * 控制器
@@ -81,16 +88,49 @@ public class PointBillsController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入pointBills")
 	@TenantAop(salesman=Salesman.roleName)
-	public R<IPage<PointBillsVO>> list(PointBills pointBills, Query query, Date createTimeStart, Date createTimeEnd) {
+	public R<IPage<PointBillsVO>> list(PointBills pointBills, Query query, Date createTimeStart, Date createTimeEnd,String key) {
 		QueryWrapper<PointBills> queryWrapper = Condition.getQueryWrapper(pointBills);
 		//添加创建时间条件
 		if (createTimeStart != null && createTimeEnd != null) {
 			queryWrapper.lambda().between(PointBills::getCreateTime, createTimeStart, createTimeEnd);
 		}
+		//添加关键字key查询条件
+		if (StringUtils.isNotBlank(key)) {
+			queryWrapper.lambda().and(wq -> {
+				wq.eq(PointBills::getId, key);
+			});
+		}
 		//循环查询
 		return R.data(PointBillsWrapper.build(loginUserService, shopService, mallService).pageVO(pointBillsService.page(Condition.getPage(query), queryWrapper)));
 	}
 
+	/**
+	 * 生成列表
+	 */
+	@PostMapping("/generateList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "生成列表", notes = "传入withdrawRec")
+	@TenantAop(salesman = Salesman.roleName)
+	public void generateList(PointBills pointBills, Query query, Date createTimeStart, Date createTimeEnd,
+							 String key,
+							 @RequestParam String keyValue,
+							 HttpServletResponse response) {
+		try {
+			R<IPage<PointBillsVO>> page = this.list(pointBills, query, createTimeStart, createTimeEnd, key);
+			//判断是否为空
+			if (ObjectUtils.isNotEmpty(page) && ObjectUtils.isNotEmpty(page.getData()) && ObjectUtils.isNotEmpty(page.getData().getRecords())) {
+				//键值对
+				Map<String, String> titleMap = JSONObject.parseObject(keyValue, Map.class);
+				if (ObjectUtils.isNotEmpty(titleMap)) {
+					//写入到Excel
+					ExcelWriteUtil.writeToResponse(response, DateUtil.now(), "提现记录表", titleMap, page.getData().getRecords(), PointBillsVO.class);
+					return;
+				}
+			}
+		} catch (Exception e) {
+			log.error(e.getMessage());
+		}
+	}
 
 	/**
 	 * 自定义分页

+ 63 - 13
ldt-core/src/main/java/org/springblade/ldt/bills/controller/TransferRecController.java

@@ -16,25 +16,36 @@
  */
 package org.springblade.ldt.bills.controller;
 
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.common.aop.core.TenantAop;
+import org.springblade.common.constant.Salesman;
+import org.springblade.common.utils.ExcelWriteUtil;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RequestParam;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.ldt.bills.entity.TransferRec;
+import org.springblade.ldt.bills.service.ITransferRecService;
 import org.springblade.ldt.bills.vo.TransferRecVO;
 import org.springblade.ldt.bills.wrapper.TransferRecWrapper;
-import org.springblade.ldt.bills.service.ITransferRecService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.Date;
+import java.util.Map;
 
 /**
  * 转账记录表 控制器
@@ -46,6 +57,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 @AllArgsConstructor
 @RequestMapping("ldt_bills/transferrec")
 @Api(value = "转账记录表", tags = "转账记录表接口")
+@Slf4j
 public class TransferRecController extends BladeController {
 
 	private final ITransferRecService transferRecService;
@@ -67,11 +79,49 @@ public class TransferRecController extends BladeController {
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入transferRec")
-	public R<IPage<TransferRecVO>> list(TransferRec transferRec, Query query) {
-		IPage<TransferRec> pages = transferRecService.page(Condition.getPage(query), Condition.getQueryWrapper(transferRec));
-		return R.data(TransferRecWrapper.build().pageVO(pages));
+	public R<IPage<TransferRecVO>> list(TransferRec transferRec, Query query, Date createTimeStart, Date createTimeEnd, String key) {
+		QueryWrapper<TransferRec> queryWrapper = Condition.getQueryWrapper(transferRec);
+		//添加创建时间条件
+		if (createTimeStart != null && createTimeEnd != null) {
+			queryWrapper.lambda().between(TransferRec::getCreateTime, createTimeStart, createTimeEnd);
+		}
+		//添加关键字key查询条件
+		if (StringUtils.isNotBlank(key)) {
+			queryWrapper.lambda().and(wq -> {
+				wq.eq(TransferRec::getId, key);
+			});
+		}
+		//循环查询
+		return R.data(TransferRecWrapper.build().pageVO(transferRecService.page(Condition.getPage(query), queryWrapper)));
 	}
 
+	/**
+	 * 生成列表
+	 */
+	@PostMapping("/generateList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "生成列表", notes = "传入withdrawRec")
+	@TenantAop(salesman = Salesman.roleName)
+	public void generateList(TransferRec transferRec, Query query, Date createTimeStart, Date createTimeEnd,
+							 String key,
+							 @RequestParam String keyValue,
+							 HttpServletResponse response) {
+		try {
+			R<IPage<TransferRecVO>> page = this.list(transferRec, query, createTimeStart, createTimeEnd, key);
+			//判断是否为空
+			if (ObjectUtils.isNotEmpty(page) && ObjectUtils.isNotEmpty(page.getData()) && ObjectUtils.isNotEmpty(page.getData().getRecords())) {
+				//键值对
+				Map<String, String> titleMap = JSONObject.parseObject(keyValue, Map.class);
+				if (ObjectUtils.isNotEmpty(titleMap)) {
+					//写入到Excel
+					ExcelWriteUtil.writeToResponse(response, DateUtil.now(), "提现记录表", titleMap, page.getData().getRecords(), TransferRecVO.class);
+					return;
+				}
+			}
+		} catch (Exception e) {
+			log.error(e.getMessage());
+		}
+	}
 
 	/**
 	 * 自定义分页 转账记录表
@@ -114,7 +164,7 @@ public class TransferRecController extends BladeController {
 		return R.status(transferRecService.saveOrUpdate(transferRec));
 	}
 
-	
+
 	/**
 	 * 删除 转账记录表
 	 */
@@ -125,5 +175,5 @@ public class TransferRecController extends BladeController {
 		return R.status(transferRecService.deleteLogic(Func.toLongList(ids)));
 	}
 
-	
+
 }

+ 52 - 8
ldt-core/src/main/java/org/springblade/ldt/bills/controller/WithdrawRecController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.ldt.bills.controller;
 
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -23,8 +25,12 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.common.aop.core.TenantAop;
 import org.springblade.common.constant.Salesman;
+import org.springblade.common.utils.ExcelWriteUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -38,6 +44,7 @@ import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.ldt.user.service.ILoginUserService;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.Date;
 import java.util.Map;
@@ -52,6 +59,7 @@ import java.util.Map;
 @AllArgsConstructor
 @RequestMapping("ldt_bills/withdrawrec")
 @Api(value = "", tags = "接口")
+@Slf4j
 public class WithdrawRecController extends BladeController {
 
 	private final IWithdrawRecService withdrawRecService;
@@ -64,9 +72,9 @@ public class WithdrawRecController extends BladeController {
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入withdrawRec")
-	@TenantAop(salesman=Salesman.roleName)
+	@TenantAop(salesman = Salesman.roleName)
 	public R<WithdrawRecVO> detail(WithdrawRec withdrawRec) {
-		return R.data(WithdrawRecWrapper.build(userService,shopService).entityVO(withdrawRecService.getOne(Condition.getQueryWrapper(withdrawRec))));
+		return R.data(WithdrawRecWrapper.build(userService, shopService).entityVO(withdrawRecService.getOne(Condition.getQueryWrapper(withdrawRec))));
 	}
 
 	/**
@@ -75,15 +83,51 @@ public class WithdrawRecController extends BladeController {
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入withdrawRec")
-	@TenantAop(salesman=Salesman.roleName)
-	public R<IPage<WithdrawRecVO>> list(WithdrawRec withdrawRec, Query query, Date createTimeStart, Date createTimeEnd) {
+	@TenantAop(salesman = Salesman.roleName)
+	public R<IPage<WithdrawRecVO>> list(WithdrawRec withdrawRec, Query query, Date createTimeStart, Date createTimeEnd, String key) {
 		QueryWrapper<WithdrawRec> queryWrapper = Condition.getQueryWrapper(withdrawRec);
 		//添加创建时间条件
-		if(createTimeStart!=null && createTimeEnd!=null){
-			queryWrapper.lambda().between(WithdrawRec::getCreateTime,createTimeStart,createTimeEnd);
+		if (createTimeStart != null && createTimeEnd != null) {
+			queryWrapper.lambda().between(WithdrawRec::getCreateTime, createTimeStart, createTimeEnd);
+		}
+		//添加关键字key查询条件
+		if (StringUtils.isNotBlank(key)) {
+			queryWrapper.lambda().and(wq -> {
+				wq.eq(WithdrawRec::getReceiverAccountName, key)
+					.or().eq(WithdrawRec::getReceiverAccountNo, key)
+					.or().eq(WithdrawRec::getOrderId, key);
+			});
 		}
 		queryWrapper.lambda().orderByDesc(WithdrawRec::getCreateTime);
-		return R.data(WithdrawRecWrapper.build(userService,shopService).pageVO(withdrawRecService.page(Condition.getPage(query), queryWrapper)));
+		return R.data(WithdrawRecWrapper.build(userService, shopService).pageVO(withdrawRecService.page(Condition.getPage(query), queryWrapper)));
+	}
+
+	/**
+	 * 生成列表
+	 */
+	@PostMapping("/generateList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "生成列表", notes = "传入withdrawRec")
+	@TenantAop(salesman = Salesman.roleName)
+	public void generateList(WithdrawRec withdrawRec,Query query,Date createTimeStart,Date createTimeEnd,
+							 String key,
+							 @RequestParam String keyValue,
+							 HttpServletResponse response) {
+		try {
+			R<IPage<WithdrawRecVO>> page = this.list(withdrawRec, query, createTimeStart, createTimeEnd, key);
+			//判断是否为空
+			if (ObjectUtils.isNotEmpty(page) && ObjectUtils.isNotEmpty(page.getData()) && ObjectUtils.isNotEmpty(page.getData().getRecords())) {
+				//键值对
+				Map<String, String> titleMap = JSONObject.parseObject(keyValue, Map.class);
+				if (ObjectUtils.isNotEmpty(titleMap)) {
+					//写入到Excel
+					ExcelWriteUtil.writeToResponse(response, DateUtil.now(), "提现记录表", titleMap, page.getData().getRecords(), WithdrawRecVO.class);
+					return;
+				}
+			}
+		} catch (Exception e) {
+			log.error(e.getMessage());
+		}
 	}
 
 	/**
@@ -143,7 +187,7 @@ public class WithdrawRecController extends BladeController {
 	@GetMapping("/amount-statistical")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "提现金额统计", notes = "提现金额统计")
-	public R<Map<String,Object>> amountStatistical() {
+	public R<Map<String, Object>> amountStatistical() {
 		return R.data(withdrawRecService.amountStatistical());
 	}