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<Date>() {
|
@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<CreditExchangeRecord.ExchangeType>() {
|
@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<CreditExchangeRecord> 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<String> 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));
|
}
|
}
|