package com.taoke.autopay.controller.admin.credit; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.taoke.autopay.dao.credit.CreditExchangeRecordMapper; import com.taoke.autopay.entity.credit.CreditExchangeRecord; import com.taoke.autopay.exception.UserCreditExchangeException; import com.taoke.autopay.manager.UserCreditExchangeManager; import com.taoke.autopay.service.credit.CreditExchangeRecordService; import com.taoke.autopay.utils.JsonUtil; import com.taoke.autopay.utils.StringUtil; import com.taoke.autopay.utils.TimeUtil; import com.taoke.autopay.vo.admin.UserCreditExchangeRecordSearchVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @Controller @RequestMapping("/admin/api/credit/exchange-record") public class UserCreditExchangeRecordAdminController { @Resource private UserCreditExchangeManager userCreditExchangeManager; private Gson gson = new GsonBuilder() .registerTypeAdapter(Date.class, new TypeAdapter() { @Override public void write(JsonWriter out, Date value) throws IOException { String desc = ""; if (value != null) { desc = TimeUtil.getGernalTime(value.getTime(), "yyyy-MM-dd HH:mm:ss"); out.value(desc); } else { out.value(""); } } @Override public Date read(JsonReader in) throws IOException { return new Date(); } }).registerTypeAdapter(CreditExchangeRecord.ExchangeType.class, new TypeAdapter() { @Override public void write(JsonWriter out, CreditExchangeRecord.ExchangeType value) throws IOException { String desc = ""; if (value != null) { desc = value.getDesc(); out.value(desc); } else { out.value(""); } } @Override public CreditExchangeRecord.ExchangeType read(JsonReader in) throws IOException { return null; } }).create(); @Resource private CreditExchangeRecordService userCreditExchangeRecordService; /** * 获取积分兑换记录列表 */ @ResponseBody @RequestMapping("list") public String listRecords(UserCreditExchangeRecordSearchVO search, int page, int limit) { CreditExchangeRecordMapper.DaoQuery query = CreditExchangeRecordMapper.DaoQuery.builder().build(); if (!StringUtil.isNullOrEmpty(search.getUid())) { query.uid = Long.parseLong(search.getUid()); } if (!StringUtil.isNullOrEmpty(search.getStatus())) { query.exchangeStatus = Integer.parseInt(search.getStatus()); } if (!StringUtil.isNullOrEmpty(search.getStart_date())) { query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getStart_date(), "yyyy-MM-dd")); } if (!StringUtil.isNullOrEmpty(search.getEnd_date())) { query.maxCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getEnd_date(), "yyyy-MM-dd") + 1000 * 60 * 60 * 24L); } query.sortList = Arrays.asList(new String[]{"create_time desc"}); query.start = (long) (page - 1) * limit; query.count = limit; List records = userCreditExchangeRecordService.listExchangeRecords(query); long count = userCreditExchangeRecordService.countExchangeRecords(query); JSONObject root = new JSONObject(); root.put("list", gson.toJson(records)); root.put("count", count); return JsonUtil.loadTrueResult(root); } /** * 批量通过兑换记录 */ @ResponseBody @RequestMapping("approve") public String approveRecords(String ids) { int successCount = 0; int failCount = 0; JSONArray idsArray = JSONArray.fromObject(ids); List errorMsgList=new ArrayList<>(); for (int i = 0; i < idsArray.size(); i++) { long id = idsArray.optLong(i); try { userCreditExchangeManager.approveExchange(id); successCount += 1; } catch (UserCreditExchangeException e) { errorMsgList.add(e.getMessage()); failCount += 1; userCreditExchangeRecordService.updateExchangeRecord(CreditExchangeRecord.builder() .id(id) .exchangeStatusDescription(e.getMessage()) .updateTime(new Date()) .build()); } } if(idsArray.size()>1) { return JsonUtil.loadFalseResult(String.format("成功通过 %d 条记录 通过异常 %d 条记录", successCount, failCount)); }else{ if(!errorMsgList.isEmpty()) { return JsonUtil.loadFalseResult(errorMsgList.get(0)); }else{ return JsonUtil.loadTrueResult("通过成功"); } } } /** * 批量驳回兑换记录 */ @ResponseBody @RequestMapping("reject") public String rejectRecords(String ids) { int successCount = 0; int failCount = 0; JSONArray idsArray = JSONArray.fromObject(ids); for (int i = 0; i < idsArray.size(); i++) { long id = idsArray.optLong(i); try { userCreditExchangeManager.rejectExchange(id); successCount += 1; } catch (UserCreditExchangeException e) { failCount += 1; } } return JsonUtil.loadFalseResult(String.format("成功驳回 %d 条记录 驳回异常 %d 条记录", successCount, failCount)); } }