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.entity.credit.UserCreditBalance; 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.service.credit.UserCreditBalanceService; 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; @Resource private UserCreditBalanceService userCreditBalanceService; /** * @param key * @param keyType 1-用户ID/昵称 2-地域 * @param page * @param limit * @return */ @ResponseBody @RequestMapping("list") public String listWxUser(String key, Integer keyType, int page, int limit) { //先查询所有的数据 WxUserInfoMapper.DaoQuery query = new WxUserInfoMapper.DaoQuery(); query.sortList = Arrays.asList(new String[]{"login_time desc"}); if (keyType == null) { keyType = 1; } switch (keyType) { case 1: if (!StringUtil.isNullOrEmpty(key)) { if (NumberUtil.isNumeric(key)) { query.id = Long.parseLong(key); } else { query.searchKey = key; } } break; case 2: if (!StringUtil.isNullOrEmpty(key)) { query.searchArea = key; } break; } List userList = wxUserService.list(query, page, limit); long count = wxUserService.count(query); Map settingsMap = new HashMap<>(); Map creditBalanceMap = 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); } // 获取用户积分余额 creditBalanceMap = userCreditBalanceService.getCreditBalancesByUserIds(uids); } // 转vo List voList = new ArrayList<>(); for (WxUserInfo user : userList) { voList.add(WxUserFactory.createVO(user, settingsMap.get(user.getId()), creditBalanceMap.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(""); } @ResponseBody @RequestMapping("getUser") public String getUser(Long id) { WxUserInfo user = wxUserService.selectById(id); return JsonUtil.loadTrueResult(user); } @ResponseBody @RequestMapping("updateUser") public String updateUser(WxUserInfo user) { wxUserService.update(user); return JsonUtil.loadTrueResult(""); } }