package com.taoke.autopay.controller.admin; 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.WxUserInfoMapper; import com.taoke.autopay.entity.AdminUser; import com.taoke.autopay.entity.WxUserInfo; import com.taoke.autopay.entity.WxUserSettings; import com.taoke.autopay.factory.WxUserFactory; import com.taoke.autopay.service.AdminUserService; import com.taoke.autopay.service.WxUserService; import com.taoke.autopay.service.WxUserSettingService; import com.taoke.autopay.utils.TimeUtil; import com.taoke.autopay.vo.WxUserOrderSettingVO; import com.taoke.autopay.vo.WxUserVO; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.NumberUtil; import org.yeshi.utils.StringUtil; import javax.annotation.Resource; import javax.servlet.http.HttpSession; import javax.validation.constraints.NotEmpty; import java.io.IOException; import java.util.*; @Controller @RequestMapping("/admin/api/wxuser") public class AdminWxUserController { 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(); } }).create(); @Resource private WxUserService wxUserService; @Resource private WxUserSettingService wxUserSettingService; @ResponseBody @RequestMapping("list") public String listWxUser(String uid, int page, int limit) { //先查询所有的数据 WxUserInfoMapper.DaoQuery query = new WxUserInfoMapper.DaoQuery(); query.sortList=Arrays.asList(new String[]{"login_time desc"}); if (!StringUtil.isNullOrEmpty(uid)) { if(NumberUtil.isNumeric(uid)) { query.id = Long.parseLong(uid); }else{ query.searchKey = uid; } } List userList = wxUserService.list(query, page, limit); long count = wxUserService.count(query); Map settingsMap = new HashMap<>(); if (userList.size() > 0) { List uids = new ArrayList<>(); for (WxUserInfo u : userList) { uids.add(u.getId()); } List settings = wxUserSettingService.listByUids(uids); for (WxUserSettings setting : settings) { settingsMap.put(setting.getId(), setting); } } // 转vo List voList = new ArrayList<>(); for (WxUserInfo user : userList) { voList.add(WxUserFactory.createVO(user, settingsMap.get(user.getId()))); } JSONObject data = new JSONObject(); data.put("count", count); data.put("list", gson.toJson(voList)); return JsonUtil.loadTrueResult(data); } @ResponseBody @RequestMapping("getOrderSettings") public String getOrderSettings(Long id) { WxUserSettings settings = wxUserSettingService.getUserSettings(id); return JsonUtil.loadTrueResult(WxUserFactory.createVO(settings)); } @ResponseBody @RequestMapping("updateOrderSettings") public String updateOrderSettings(WxUserOrderSettingVO vo) { WxUserSettings settings = new WxUserSettings(); settings.setId(vo.getId()); settings.setTotalOrderCountPerDay(vo.getTotalSubmitCount()); settings.setDyOrderCountPerDay(vo.getDyPayCount()); settings.setKsOrderCountPerDay(vo.getKsPayCount()); wxUserSettingService.add(settings); return JsonUtil.loadTrueResult(""); } }