fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/InviteController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/OrderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserAccountController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserMoneyController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserAccountService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/InviteController.java
New file @@ -0,0 +1,314 @@ package com.yeshi.fanli.controller.wxmp.v1; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.DateUtil; import org.yeshi.utils.JsonUtil; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.bus.user.UserInviteSeparate; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInviteSeparateService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleExtraInfoSerivce; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.VersionUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @Controller("WXMPInviteController") @RequestMapping("/wxmp/api/v1/invite") public class InviteController { @Resource private ThreeSaleSerivce threeSaleSerivce; @Resource private ConfigService configService; @Resource private UserInfoExtraService userInfoExtraService; @Resource private UserVIPInfoService userVIPInfoService; @Resource private UserInviteSeparateService userInviteSeparateService; @Resource private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce; /** * 站内信提醒队员添加微信号 * * @param acceptData * @param uid * @param inviteId * @param out */ @RequestMapping(value = "tailorCode") public void tailorCode(AcceptData acceptData, String callback, Long uid, PrintWriter out) { if (uid == null) { out.print(JsonUtil.loadFalseResult("用户id缺失")); return; } JSONObject data = new JSONObject(); data.put("num", threeSaleSerivce.countFirstTeam(uid, 1)); data.put("limit", Constant.INVITE_CODRE_TAILOR_LIMIT); out.print(JsonUtil.loadTrueResult(data)); } /** * 用户队员统计 1.4.1 * * @param acceptData * @param id * @param out */ @RequestMapping(value = "countMyTeam", method = RequestMethod.POST) public void countMyTeam(AcceptData acceptData, long uid, PrintWriter out) { try { long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1); long firstTeamTotal = threeSaleSerivce.countFirstTeam(uid, null); long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1); long secondTeamTotal = threeSaleSerivce.countSecondTeam(uid, null); JSONObject bossData = new JSONObject(); ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid); if (threeSale != null) { UserInfo boss = threeSale.getBoss(); if (boss != null) { bossData.put("nickName", boss.getNickName()); bossData.put("portrait", boss.getPortrait()); } SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); Long createTime = threeSale.getCreateTime(); Date inviteTime = new Date(createTime); bossData.put("inviteTime", "邀请时间: " + sdf.format(inviteTime)); } JSONObject resultData = new JSONObject(); String helpLink = configService.get("team_help_url"); if (helpLink == null) { helpLink = ""; } resultData.put("helpLink", helpLink); resultData.put("firstTeam", firstTeam); resultData.put("firstTeamTotal", firstTeamTotal); resultData.put("secondTeam", secondTeam); resultData.put("secondTeamTotal", secondTeamTotal); resultData.put("boss", bossData); boolean hasCode = false; String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); if (inviteCode != null && inviteCode.trim().length() > 0) { hasCode = true; // 已有邀请码 } else { // 邀请激活链接 resultData.put("activationlink", configService.get("invite_activation_url")); } resultData.put("hasCode", hasCode); out.print(JsonUtil.loadTrueResult(resultData)); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("统计失败")); e.printStackTrace(); } } /** * * @param acceptData * @param id * @param out */ @RequestMapping(value = "listMyTeam", method = RequestMethod.POST) public void listMyTeam(AcceptData acceptData, int page, long uid, int type, PrintWriter out) { if (type != 1 && type != 2) { out.print(JsonUtil.loadFalseResult("粉丝类型不正确")); return; } long count = 0; List<ThreeSale> listTeam = null; if (type == 1) { listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, 1); count = threeSaleSerivce.countFirstTeam(uid, 1); } else if (type == 2) { listTeam = threeSaleSerivce.listSecondTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, 1); count = threeSaleSerivce.countSecondTeam(uid, 1); } boolean needVIPInfo = false; if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) needVIPInfo = true; // 组织数据 JSONObject resultData = organizeTeam(count, listTeam, uid, type, needVIPInfo); // 第一页判断是否激活 是否有队员 if (type == 1 && page == 1) { boolean hasCode = false; UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra != null) { if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) hasCode = true; } resultData.put("hasCode", hasCode); resultData.put("hasTeam", count > 0 ? true : false); } out.print(JsonUtil.loadTrueResult(resultData)); } /** * 组织数据 * * @param count * @param list * @param uid * @param type * @return */ private JSONObject organizeTeam(long count, List<ThreeSale> list, Long uid, int type, boolean needVipInfo) { JSONObject result = new JSONObject(); JSONArray resultArray = new JSONArray(); Date todayTime = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("MM.dd HH:mm"); SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); SimpleDateFormat formatYears = new SimpleDateFormat("yyyy"); List<Long> workerIdList = new ArrayList<>(); Map<Long, Boolean> vipMap = null; if (needVipInfo) { for (ThreeSale threeSale : list) workerIdList.add(threeSale.getWorker().getId()); if (workerIdList.size() > 0) vipMap = userVIPInfoService.listByUids(workerIdList); } for (ThreeSale threeSale : list) { UserInfo worker = threeSale.getWorker(); if (worker == null) { continue; } Long workerId = worker.getId(); JSONObject object = new JSONObject(); object.put("workerId", worker.getId()); object.put("nickName", worker.getNickName()); object.put("portrait", worker.getPortrait()); object.put("inviteId", threeSale.getId()); Date inviteTime = new Date(threeSale.getCreateTime()); object.put("inviteTime", format.format(inviteTime) + " 加入"); // 添加是否为VIP if (vipMap != null && vipMap.get(worker.getId()) != null) { object.put("vip", vipMap.get(worker.getId())); if (vipMap.get(worker.getId())) { UserInviteSeparate separate = userInviteSeparateService.selectByWorkerIdAndBossId(worker.getId(), uid); if (separate != null && separate.getEndTime() != null) { try { JSONObject contentJson1 = new JSONObject(); contentJson1.put("color", "#888888"); contentJson1.put("content", "将于"); JSONObject contentJson2 = new JSONObject(); contentJson2.put("color", "#F14242"); contentJson2.put("content", DateUtil.dateDiff4(new Date(), separate.getEndTime())); JSONObject contentJson3 = new JSONObject(); contentJson3.put("color", "#888888"); contentJson3.put("content", "后脱离邀请关系"); JSONArray array = new JSONArray(); array.add(contentJson1); array.add(contentJson2); array.add(contentJson3); object.put("vipBreakTime", array); } catch (Exception e) { e.printStackTrace(); } } } } String fontColor1 = "#888888"; JSONArray array = new JSONArray(); if (threeSale.getState()) { Long lastLoginTime = worker.getLastLoginTime(); if (lastLoginTime == null) { lastLoginTime = threeSale.getCreateTime(); } JSONObject contentJson = new JSONObject(); contentJson.put("color", fontColor1); if (formatYears.format(todayTime).equals(formatYears.format(lastLoginTime))) { // 本年 contentJson.put("content", "最近登录 " + sdf.format(lastLoginTime)); } else { // 往年 contentJson.put("content", "最近登录 " + format.format(lastLoginTime)); } array.add(contentJson); // 一级队员 查询 if (type == 1) { String memoName = null; ThreeSaleExtraInfo threeSaleExtraInfo = threeSale.getThreeSaleExtraInfo(); if (threeSaleExtraInfo != null) { if (!StringUtil.isNullOrEmpty(threeSaleExtraInfo.getNickname())) { memoName = threeSaleExtraInfo.getNickname(); } } object.put("memoName", memoName); UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(workerId); if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin())) { object.put("weiXin", userInfoExtra.getWeiXin()); object.put("weiXinState", 3); object.put("weiXinTip", "添加TA的微信,你可教授TA如何通过板栗快省赚钱技巧。"); } else { if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) { object.put("weiXinState", 1); object.put("weiXinTip", "点击提醒TA,系统会发送一封站内信,提醒其添加微信号。"); } else { object.put("weiXinState", 2); object.put("weiXinTip", "系统已发送提醒,邀请人添加微信后你可复制,如对方迟迟不添加,你可联系人工客服寻求帮助"); } } } } object.put("state", 1); object.put("recentMsg", array); resultArray.add(object); } result.put("count", count); result.put("list", resultArray); return result; } } fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/OrderController.java
New file @@ -0,0 +1,79 @@ package com.yeshi.fanli.controller.wxmp.v1; import java.io.PrintWriter; import java.math.BigDecimal; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.JsonUtil; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.service.inter.config.SystemClientParamsService; import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; import com.yeshi.fanli.service.inter.user.UserCustomSettingsService; import com.yeshi.fanli.vo.user.UserSettingsVO; import net.sf.json.JSONObject; @Controller("WXMPOrderController") @RequestMapping("/wxmp/api/v1/order") public class OrderController { @Resource private SystemClientParamsService systemClientParamsService; @Resource private UserCustomSettingsService userCustomSettingsService; @Resource private HongBaoV2CountService hongBaoV2CountService; /** * 统计奖金 * * @param acceptData * @param uid * @param dateType * 1-今日 2-昨天 3-本月 4-上个月 * @param out */ @RequestMapping(value = "getBonusCount", method = RequestMethod.POST) public void getBonusCount(AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) { if (uid == null) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); return; } boolean show = false; UserSettingsVO settings = null; try { settings = userCustomSettingsService.getMySettings(uid); } catch (Exception e) { } // 验证是否显示模块 if (settings != null && settings.getNoBonusCount() != null) { if (settings.getNoBonusCount() == 1) { show = false; } else if (settings.getNoBonusCount() == 0) { show = true; } } else { show = hongBaoV2CountService.getHongBaoCount(uid, null) > 0; } BigDecimal selfMoney = hongBaoV2CountService.getRewardMoneyToCount(uid, dateType, 1); BigDecimal shareMoney = hongBaoV2CountService.getRewardMoneyToCount(uid, dateType, 2); BigDecimal inviteMoney = hongBaoV2CountService.getRewardMoneyToCount(uid, dateType, 3); JSONObject data = new JSONObject(); data.put("show", show); data.put("selfMoney", selfMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); data.put("shareMoney", shareMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); data.put("inviteMoney", inviteMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); out.print(JsonUtil.loadTrueResult(data)); } } fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserAccountController.java
@@ -6,7 +6,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.aspectj.weaver.JoinPointSignature; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.IPUtil; @@ -19,9 +18,13 @@ import com.yeshi.fanli.dto.WXMPAcceptData; import com.yeshi.fanli.dto.user.wx.WXMPLoginData; import com.yeshi.fanli.dto.user.wx.WXMPLoginResult; import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode; import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.WeiXinUser; import com.yeshi.fanli.exception.user.UserAccountException; import com.yeshi.fanli.exception.user.UserInfoExtraException; import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService; import com.yeshi.fanli.service.inter.user.UserAccountService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; @@ -52,6 +55,9 @@ @Resource private RedisManager redisManager; @Resource private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService; /** * 通过邀请码获取用户信息 @@ -270,4 +276,78 @@ out.print(JsonUtil.loadTrueResult(data)); } @RequestMapping("bindWX") public void bindWX(WXMPAcceptData acceptData, Long uid, String wxEncryptedData, String wxIv, HttpServletRequest request, HttpSession session, PrintWriter out) { if (StringUtil.isNullOrEmpty(acceptData.getOpenId())) { out.print(JsonUtil.loadFalseResult("openId为空")); return; } if(uid==null){ out.print(JsonUtil.loadFalseResult("uid为空")); return; } if (StringUtil.isNullOrEmpty(wxEncryptedData) || StringUtil.isNullOrEmpty(wxIv)) { out.print(JsonUtil.loadFalseResult("微信信息为空")); return; } WXMPSessionInfo sessionInfo = (WXMPSessionInfo) session.getAttribute(UserController.WXMP_SESSION_INFO_KEY); if (sessionInfo == null) { out.print(JsonUtil.loadFalseResult(90000, "请重新登录")); return; } String sessionKey = sessionInfo.getSessionKey(); if (StringUtil.isNullOrEmpty(sessionKey)) { out.print(JsonUtil.loadFalseResult("code无效")); return; } WXMPUserInfo userInfo = WXXCXUtil.getUserInfo(sessionKey, wxEncryptedData, wxIv); if (userInfo == null || StringUtil.isNullOrEmpty(userInfo.getUnionId())) { out.print(JsonUtil.loadFalseResult("获取微信信息失败")); return; } // 绑定微信 WeiXinUser wxUser = new WeiXinUser(); wxUser.setHeadimgurl(userInfo.getAvatarUrl()); wxUser.setCity(userInfo.getCity()); wxUser.setCountry(userInfo.getCountry()); wxUser.setNickname(userInfo.getNickName()); wxUser.setOpenid(""); wxUser.setProvince(userInfo.getProvince()); wxUser.setSex(userInfo.getGender()); wxUser.setUnionid(userInfo.getUnionId()); try { UserInfo user = userInfoService.getUserByIdWithMybatis(uid); // 判断taoBaoUid是否已经封禁 ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId, user.getWxUnionId()); if (ic != null && ic.getEffective() != null && ic.getEffective()) { out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); // 封禁用户 // 封禁绑定的正常用户 if (user != null && user.getState() != null && user.getState() == UserInfo.STATE_NORMAL) { userAccountService.forbiddenUser(uid, "封禁:绑定被封禁的微信号"); } return; } userAccountService.bindWeiXin(uid, wxUser); user = userInfoService.getUserByIdWithMybatis(uid); JSONObject data = new JSONObject(); data.put("user", UserUtil.filterForClientUser(user)); out.print(JsonUtil.loadTrueResult(data)); } catch (UserAccountException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } } fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserController.java
@@ -3,22 +3,33 @@ import java.io.PrintWriter; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.entity.wx.WXMPSessionInfo; import org.yeshi.utils.wx.WXXCXUtil; import com.yeshi.fanli.dto.WXMPAcceptData; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum; import com.yeshi.fanli.exception.user.UserInfoException; import com.yeshi.fanli.exception.user.UserInfoExtraException; import com.yeshi.fanli.service.inter.user.MaskKeyService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import net.sf.json.JSONObject; @Controller @Controller("WXMPUserController") @RequestMapping("/wxmp/api/v1/user") public class UserController { @@ -26,6 +37,18 @@ @Resource private UserInfoExtraService userInfoExtraService; @Resource private MaskKeyService maskKeyService; @Resource private UserInfoService userInfoService; @Resource private UserInfoModifyRecordService userInfoModifyRecordService; @Resource private UserVIPInfoService userVIPInfoService; /** * 获取openId @@ -52,4 +75,100 @@ } } @RequestMapping(value = "saveInfo") public void saveInfo(AcceptData acceptData, String nickName, String weiXin, Integer sex, Long uid, String inviteCode, MultipartFile qrCodeFile, HttpServletRequest request, PrintWriter out) { try { if (uid == null) { out.print(JsonUtil.loadFalseResult("用户未登录")); return; } // 修改昵称 if (!StringUtil.isNullOrEmpty(nickName)) { if (nickName.length() > 200) { out.print(JsonUtil.loadFalseResult("昵称过长")); return; } if (maskKeyService.examineContent(nickName)) { out.print(JsonUtil.loadFalseResult("不能包含敏感词汇")); return; } userInfoService.saveUserInfo(nickName, uid); userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.nickName, nickName); } // 修改微信号 if (!StringUtil.isNullOrEmpty(weiXin)) { if (weiXin.length() > 32) { out.print(JsonUtil.loadFalseResult("微信号过长")); return; } UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra != null) { UserInfoExtra extra = new UserInfoExtra(); extra.setId(userInfoExtra.getId()); extra.setWeiXin(weiXin); userInfoExtraService.saveUserInfoExtra(extra); userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.setWeiXinNum, weiXin); } } // 修改性别 if (sex != null && sex > 0 && sex < 3) { UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra != null) { UserInfoExtra extra = new UserInfoExtra(); extra.setId(userInfoExtra.getId()); extra.setSex(sex); userInfoExtraService.saveUserInfoExtra(extra); userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.gender, sex + ""); } } if (!StringUtil.isNullOrEmpty(inviteCode)) {// 邀请码不为空 inviteCode = inviteCode.trim(); if (inviteCode.length() >= 4 && inviteCode.length() <= 12) { if (!userVIPInfoService.isVIP(uid)) { out.print(JsonUtil.loadFalseResult(20, "只有超级会员才能修改")); return; } try { userInfoExtraService.updateInviteCodeVip(inviteCode, uid); out.print(JsonUtil.loadTrueResult("保存成功")); return; } catch (UserInfoExtraException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMessage())); } } else { out.print(JsonUtil.loadFalseResult(1, "邀请码必须为4到12位")); return; } } // 二维码 if (qrCodeFile != null) { userInfoExtraService.uploadERCode(qrCodeFile, uid); } out.print(JsonUtil.loadTrueResult("保存成功")); } catch (UserInfoException e) { out.print(JsonUtil.loadFalseResult(e.getMsg())); e.printStackTrace(); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("保存失败")); e.printStackTrace(); } } } fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserMoneyController.java
New file @@ -0,0 +1,219 @@ package com.yeshi.fanli.controller.wxmp.v1; import java.io.PrintWriter; import java.lang.reflect.Type; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.JsonUtil; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.money.UserMoneyDetailService; import com.yeshi.fanli.service.inter.money.extract.ExtractService; import com.yeshi.fanli.service.inter.order.HongBaoV2Service; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.vo.money.UserMoneyStatisticVO; @Controller("WXMPUserMoneyController") @RequestMapping("/wxmp/api/v1/usermoney") public class UserMoneyController { public final static String WXMP_SESSION_INFO_KEY = "WXMP-SESSION-INFO"; @Resource private UserMoneyDetailService userMoneyDetailService; @Resource private UserInfoService userInfoService; @Resource private HongBaoV2Service hongBaoV2Service; @Resource private ExtractService extractService; @Resource private UserInfoExtraService userInfoExtraService; @Resource private ConfigService configService; /** * 用户资金统计 * * @param acceptData * @param uid * @param out */ @RequestMapping(value = "getUserMoneyStatistic") public void getUserMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null || uid == 0) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); return; } UserInfo user = userInfoService.getUserById(uid); BigDecimal balance = user.getMyHongBao(); UserMoneyStatisticVO vo = new UserMoneyStatisticVO(); vo.setBalanceMoney(balance); Date minDate = null; Date maxDate = null; List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>(); // 上月提现 typeList.clear(); typeList.add(UserMoneyDetailTypeEnum.extract); typeList.add(UserMoneyDetailTypeEnum.extractReject); typeList.add(UserMoneyDetailTypeEnum.extractVerify); long timeStamp = System.currentTimeMillis(); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(timeStamp); maxDate = new Date(TimeUtil .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); calendar.add(Calendar.MONTH, -1); minDate = new Date(TimeUtil .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); vo.setLastMonthExtractMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); // 上月收入 typeList.clear(); typeList.add(UserMoneyDetailTypeEnum.fanli); typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan); typeList.add(UserMoneyDetailTypeEnum.share); typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); typeList.add(UserMoneyDetailTypeEnum.invite); typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); typeList.add(UserMoneyDetailTypeEnum.weiQuan); typeList.add(UserMoneyDetailTypeEnum.hongbao); typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct); vo.setLastMonthRecievedMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); // 最近三个月收入 maxDate = new Date(timeStamp); minDate = new Date(timeStamp - 1000 * 60 * 60 * 24 * 90L); vo.setLatestThreeMonthRecievedMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); // 本月提现 maxDate = new Date(timeStamp); calendar = Calendar.getInstance(); minDate = new Date(TimeUtil .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); calendar.add(Calendar.MONTH, -1); typeList.clear(); typeList.add(UserMoneyDetailTypeEnum.extract); typeList.add(UserMoneyDetailTypeEnum.extractReject); typeList.add(UserMoneyDetailTypeEnum.extractVerify); vo.setMonthExtractMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); // 本月到账 typeList.clear(); typeList.add(UserMoneyDetailTypeEnum.fanli); typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan); typeList.add(UserMoneyDetailTypeEnum.share); typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); typeList.add(UserMoneyDetailTypeEnum.invite); typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); typeList.add(UserMoneyDetailTypeEnum.weiQuan); typeList.add(UserMoneyDetailTypeEnum.hongbao); typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct); vo.setMonthRecievedMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); // 总的邀请赚 typeList.clear(); typeList.add(UserMoneyDetailTypeEnum.invite); typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); minDate = new Date(0L); maxDate = new Date(timeStamp); vo.setTotalInviteMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); // 总的到账 typeList.clear(); typeList.add(UserMoneyDetailTypeEnum.fanli); typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan); typeList.add(UserMoneyDetailTypeEnum.share); typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); typeList.add(UserMoneyDetailTypeEnum.invite); typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); typeList.add(UserMoneyDetailTypeEnum.weiQuan); typeList.add(UserMoneyDetailTypeEnum.hongbao); typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct); vo.setTotalRecievedMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); // 总的分享赚 typeList.clear(); typeList.add(UserMoneyDetailTypeEnum.share); typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); vo.setTotalShareMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); minDate = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(timeStamp, "yyyy-MM"), "yyyy-MM")); Calendar ca = Calendar.getInstance(); ca.setTime(new Date(timeStamp)); ca.add(Calendar.MONTH, 1); maxDate = new Date( TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy-MM"), "yyyy-MM")); // 本月未到账 vo.setMonthUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithPreGetTime(uid, minDate, maxDate)); // 全部未到账 minDate = new Date(0); maxDate = new Date(timeStamp); vo.setTotalUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithCreateTime(uid, minDate, maxDate)); GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { @Override public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { if (value == null) { return new JsonPrimitive(""); } else { // 保留2位小数 value = value.setScale(2); return new JsonPrimitive(value.toString()); } } }); // 获取提现中的信息 BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid); if (extractingMoney.compareTo(new BigDecimal(0)) > 0) vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP)); out.print(JsonUtil.loadTrueResult(builder.create().toJson(vo))); } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -1278,14 +1278,33 @@ } @Transactional(rollbackFor=UserAccountException.class) @Override public void bindWeiXin(AcceptData acceptData, Long uid, String code) throws UserAccountException { WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()); WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret()); if (weiXinUser == null) { throw new UserAccountException(2, "微信帐号授权失败"); } String wxUnionId = weiXinUser.getUnionid(); if (StringUtil.isNullOrEmpty(wxUnionId)) { throw new UserAccountException(2, "微信帐号授权失败"); } bindWeiXin(uid, weiXinUser); } @Transactional(rollbackFor=UserAccountException.class) @Override public void bindWeiXin(Long uid,WeiXinUser weiXinUser) throws UserAccountException { UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid); if (user == null) { throw new UserAccountException(1, "用户不存在"); } WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()); WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret()); if (weiXinUser == null) { throw new UserAccountException(2, "微信帐号授权失败"); } fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserAccountService.java
@@ -3,11 +3,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import com.yeshi.fanli.dto.user.wx.WXMPLoginData; import com.yeshi.fanli.dto.user.wx.WXMPLoginResult; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.LoginResult; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.WeiXinUser; import com.yeshi.fanli.exception.user.UserAccountException; /** @@ -217,6 +216,17 @@ */ public void bindWeiXin(AcceptData acceptData, Long uid, String code) throws UserAccountException; /** * 绑定微信 V1.5.3 * * @param uid * @param code * @throws UserAccountException */ public void bindWeiXin( Long uid, WeiXinUser wxUser ) throws UserAccountException; /** * 账户封禁 *