From 0e9b6603d4ae9d11c1fbc90257ce816c5807b8ff Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 28 十月 2022 16:55:02 +0800 Subject: [PATCH] 批量添加结算消息 --- app/src/main/java/com/yeshi/makemoney/app/controller/admin/money/ExtractAdminController.java | 247 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 228 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/yeshi/makemoney/app/controller/admin/money/ExtractAdminController.java b/app/src/main/java/com/yeshi/makemoney/app/controller/admin/money/ExtractAdminController.java index eed5615..3573d01 100644 --- a/app/src/main/java/com/yeshi/makemoney/app/controller/admin/money/ExtractAdminController.java +++ b/app/src/main/java/com/yeshi/makemoney/app/controller/admin/money/ExtractAdminController.java @@ -1,35 +1,72 @@ package com.yeshi.makemoney.app.controller.admin.money; import com.google.gson.*; +import com.ks.lib.common.exception.ParamsException; +import com.yeshi.makemoney.app.aop.AdminApiFilter; +import com.yeshi.makemoney.app.dto.money.ExtractConfig; +import com.yeshi.makemoney.app.entity.config.SystemConfig; +import com.yeshi.makemoney.app.entity.config.SystemConfigKey; +import com.yeshi.makemoney.app.entity.money.ExtractPayType; +import com.yeshi.makemoney.app.exception.money.ExtractException; +import com.yeshi.makemoney.app.exception.money.UserMoneyBalanceException; +import com.yeshi.makemoney.app.service.inter.AdminUserService; +import com.yeshi.makemoney.app.service.inter.config.SystemConfigService; +import com.yeshi.makemoney.app.service.inter.user.UserInfoService; +import com.yeshi.makemoney.app.service.manager.VerifyCodeManager; +import com.yeshi.makemoney.app.vo.AcceptAdminData; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.StringUtil; import org.yeshi.utils.TimeUtil; import com.google.gson.reflect.TypeToken; import javax.annotation.Resource; import javax.servlet.http.HttpSession; import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; + import com.yeshi.makemoney.app.entity.money.Extract; import com.yeshi.makemoney.app.service.inter.money.ExtractService; import com.yeshi.makemoney.app.service.query.money.ExtractQuery; +import org.yeshi.utils.exception.MailSendException; +import org.yeshi.utils.mail.EmailApiUtil; +import org.yeshi.utils.mail.EmailInfo; + @Controller @RequestMapping("admin/api/money/extract") public class ExtractAdminController { + private final String SESSION_KEY_EXTRACT_EMAIL_VERIFIED = "admin-do-extract"; + + @Resource private ExtractService extractService; + @Resource + private SystemConfigService systemConfigService; - @ResponseBody + @Resource + private AdminUserService adminUserService; + + @Resource + private VerifyCodeManager verifyCodeManager; + + @Resource + private UserInfoService userInfoService; + + + @ResponseBody @RequestMapping("list") - public String list(ExtractQuery query, int page, int limit, String callback ) { - List<Extract> list = extractService.list(query,page,limit); + public String list(ExtractQuery query, int page, int limit, String callback) { + List<Extract> list = extractService.list(query, page, limit); long count = extractService.count(query); JSONObject data = new JSONObject(); Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonSerializer<Date>() { @@ -38,39 +75,211 @@ public JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) { return date == null ? new JsonPrimitive("") : new JsonPrimitive(TimeUtil.getGernalTime(date.getTime(), "yyyy.MM.dd HH:mm")); } + }).registerTypeAdapter(ExtractPayType.class, new JsonSerializer<ExtractPayType>() { + + @Override + public JsonElement serialize(ExtractPayType date, Type type, JsonSerializationContext jsonSerializationContext) { + return date == null ? new JsonPrimitive("") : new JsonPrimitive(date.getName()); + } }).create(); data.put("list", gson.toJson(list)); data.put("count", count); - return JsonUtil.loadJSONP(callback,JsonUtil.loadTrueResult(data)); - - } - - @ResponseBody - @RequestMapping("delete") - public String delete(String ids, String callback) { - Type type = new TypeToken<List<Long>>(){}.getType(); - List<Long> idList=new Gson().fromJson(ids,type); - extractService.delete(idList); - return JsonUtil.loadJSONP(callback,JsonUtil.loadTrueResult("")); + return JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)); } @ResponseBody @RequestMapping("get") - public String get(Long id, HttpSession session, String callback) { + public String get(Long id) { Extract entity = extractService.get(id); - if (entity !=null){ - return JsonUtil.loadJSONP(callback,JsonUtil.loadTrueResult(entity)); - + if (entity != null) { + entity.setUser(userInfoService.get(entity.getUser().getId())); + return JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(entity)); } else { - return JsonUtil.loadJSONP(callback,JsonUtil.loadFalseResult("ID涓嶅瓨鍦�")); + return JsonUtil.loadFalseResult("ID涓嶅瓨鍦�"); + } + } + @ResponseBody + @RequestMapping("getExtractConfig") + public String getExtractConfig(AcceptAdminData acceptAdminData) { + SystemConfig config = systemConfigService.getByKey(acceptAdminData.getSystem(), SystemConfigKey.extractConfig); + ExtractConfig extractConfig = null; + if (config != null && !StringUtil.isNullOrEmpty(config.getValue())) { + extractConfig = new Gson().fromJson(config.getValue(), ExtractConfig.class); + } + + if (extractConfig == null) { + extractConfig = new ExtractConfig(); + extractConfig.setNewerLittleMoneyNum(0); + extractConfig.setMaxMoney(new BigDecimal(0)); + extractConfig.setMaxMoneyPerDay(new BigDecimal(0)); + extractConfig.setMaxNumPerDay(0); + extractConfig.setMinMoney(new BigDecimal(0)); + extractConfig.setExtractMoneyList(new ArrayList<>()); + } + + return JsonUtil.loadTrueResult(extractConfig); + + } + + @ResponseBody + @RequestMapping("updateExtractConfig") + public String updateExtractConfig(@RequestBody ExtractConfig extractConfig, AcceptAdminData acceptAdminData) { + SystemConfig config = systemConfigService.getByKey(acceptAdminData.getSystem(), SystemConfigKey.extractConfig); + if (config == null) { + SystemConfig newConfig = new SystemConfig(); + newConfig.setSystem(acceptAdminData.getSystem()); + newConfig.setKey(SystemConfigKey.extractConfig); + newConfig.setValue(new Gson().toJson(extractConfig)); + try { + systemConfigService.add(newConfig); + } catch (Exception e) { + return JsonUtil.loadFalseResult(e.getMessage()); + } + } else { + SystemConfig newConfig = new SystemConfig(); + newConfig.setId(config.getId()); + newConfig.setValue(new Gson().toJson(extractConfig)); + systemConfigService.update(newConfig); + } + return JsonUtil.loadTrueResult(""); + } + + + /** + * @return java.lang.String + * @author hxh + * @description 鍙戦�佹彁鐜扮殑閭楠岃瘉鐮� + * @date 14:14 2022/5/9 + * @param: extractConfig + * @param: acceptAdminData + **/ + @ResponseBody + @RequestMapping("sendExtractEmail") + public String sendExtractEmail(AcceptAdminData acceptAdminData) { + if (acceptAdminData.getAdminUser() == null) { + return JsonUtil.loadFalseResult("绠$悊鍛樹俊鎭负绌�"); + } + + if (StringUtil.isNullOrEmpty(acceptAdminData.getAdminUser().getEmail())) { + return JsonUtil.loadFalseResult("绠$悊鍛橀偖浠跺湴鍧�涓虹┖"); + } + + String emailSender = systemConfigService.getValueCache(acceptAdminData.getSystem(), SystemConfigKey.emailSender); + + if (StringUtil.isNullOrEmpty(emailSender)) { + return JsonUtil.loadFalseResult("绯荤粺灏氭湭閰嶇疆閭欢鍙戦�佽处鍙蜂俊鎭�"); + } + String[] sts = emailSender.split(","); + if (sts.length != 2) { + return JsonUtil.loadFalseResult("閭欢鍙戦�佽处鍙蜂俊鎭牸寮忔湁璇�"); + } + + String code = StringUtil.getVerifyCode(); + EmailInfo emailInfo = new EmailInfo(); + emailInfo.setFromEmail(sts[0]); + emailInfo.setFormEmailPwd(sts[1]); + emailInfo.setApp(systemConfigService.getValueCache(acceptAdminData.getSystem(), SystemConfigKey.androidPushAppCode)); + emailInfo.setTitle("鎻愮幇瀹℃牳楠岃瘉鐮侊細" + code); + emailInfo.setContent("鎻愮幇瀹℃牳楠岃瘉鐮侊細" + code + ",5鍒嗛挓鍐呮湁鏁堬紝璇峰敖蹇獙璇併��"); + emailInfo.setToEmail(acceptAdminData.getAdminUser().getEmail()); + try { + EmailApiUtil.sendEmail(emailInfo); + verifyCodeManager.sendEmailCodeSuccess(emailInfo.getToEmail(), code); + return JsonUtil.loadTrueResult(""); + } catch (MailSendException e) { + return JsonUtil.loadFalseResult(e.getMessage()); } } + @ResponseBody + @RequestMapping("verifyExtractEmail") + public String verifyExtractEmail(String code, AcceptAdminData acceptAdminData, HttpSession session) { + if (acceptAdminData.getAdminUser() == null) { + return JsonUtil.loadFalseResult("绠$悊鍛樹俊鎭负绌�"); + } + + if (StringUtil.isNullOrEmpty(acceptAdminData.getAdminUser().getEmail())) { + return JsonUtil.loadFalseResult("绠$悊鍛橀偖浠跺湴鍧�涓虹┖"); + } + + boolean isRight = verifyCodeManager.isEMailCodeRight(acceptAdminData.getAdminUser().getEmail(), code); + if (isRight) { + session.setAttribute(SESSION_KEY_EXTRACT_EMAIL_VERIFIED, true); + return JsonUtil.loadTrueResult(""); + } else { + return JsonUtil.loadFalseResult("楠岃瘉鐮侀敊璇�"); + } + } + + + /** + * @return java.lang.String + * @author hxh + * @description 閫氳繃鎻愮幇 + * @date 15:04 2022/5/9 + * @param: id + * @param: acceptAdminData + **/ + + @ResponseBody + @RequestMapping("passExtract") + public String passExtract(Long id, AcceptAdminData acceptAdminData, HttpSession session) { + + if (!isVerifiedEmailCode(session)) { + return JsonUtil.loadFalseResult(50002, "閭鏈獙璇�"); + } + + try { + extractService.passExtract(id, acceptAdminData.getAdminUser().getAccount()); + return JsonUtil.loadTrueResult(""); + } catch (ExtractException e) { + e.printStackTrace(); + return JsonUtil.loadFalseResult(e.getMessage()); + } + } + + @ResponseBody + @RequestMapping("rejectExtract") + public String rejectExtract(Long id, String reason, AcceptAdminData acceptAdminData, HttpSession session) { + if (!isVerifiedEmailCode(session)) { + return JsonUtil.loadFalseResult(50002, "閭鏈獙璇�"); + } + try { + extractService.rejectExtract(id, reason, acceptAdminData.getAdminUser().getAccount()); + return JsonUtil.loadTrueResult(""); + } catch (ExtractException e) { + e.printStackTrace(); + return JsonUtil.loadFalseResult(e.getMessage()); + } catch (UserMoneyBalanceException e) { + e.printStackTrace(); + return JsonUtil.loadFalseResult(e.getMessage()); + } catch (ParamsException e) { + e.printStackTrace(); + return JsonUtil.loadFalseResult(e.getMessage()); + } + + } + + + /** + * @return boolean + * @author hxh + * @description 鏄惁宸茬粡楠岃瘉浜嗛偖浠堕獙璇佺爜 + * @date 15:02 2022/5/9 + * @param: session + **/ + private boolean isVerifiedEmailCode(HttpSession session) { + Boolean verified = (Boolean) session.getAttribute(SESSION_KEY_EXTRACT_EMAIL_VERIFIED); + if (verified != null && verified) { + return true; + } + return false; + } } -- Gitblit v1.8.0