fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java
@@ -359,39 +359,6 @@ } } /** * 账号打通 * * @param acceptData * @param mainUid * @param lessUid * @param session * @param out */ @RequestMapping(value = "connect") public void connect(AcceptData acceptData, long mainUid, long lessUid, HttpSession session, PrintWriter out) { BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } if (mainUid == 0 || lessUid == 0) { out.print(JsonUtil.loadFalseResult(1, "请上传打通用户ID")); return; } try { userAccountService.connectUsers(new UserInfo(mainUid), new UserInfo(lessUid)); UserInfo user = userInfoService.getUserByIdWithMybatis(mainUid); JSONObject data = new JSONObject(); data.put("user", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(user))); out.print(JsonUtil.loadTrueResult(data)); } catch (UserAccountException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } /** * 获取用户ID fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
@@ -431,7 +431,7 @@ form.setWxName(xinUser.getNickname()); String wxHeadImg = COSManager.getInstance() .uploadFile(HttpUtil.getAsInputStream(xinUser.getHeadimgurl()), Constant.WXHEADURL + UUID.randomUUID().toString()) FilePathEnum.userPortrait + UUID.randomUUID().toString()) .getUrl(); form.setWxPic(wxHeadImg); } else if (formLoginType == Constant.TAOBAO) { fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpCenterServiceImpl.java
@@ -25,6 +25,7 @@ import com.yeshi.fanli.exception.config.HelpCenterException; import com.yeshi.fanli.service.inter.help.HelpCenterService; import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService; import com.yeshi.fanli.util.FilePathEnum; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.db.MongoDBManager; @@ -39,8 +40,6 @@ @Resource private AdActivityVersionControlService adActivityVersionControlService; @Override public int updateByPrimaryKey(HelpCenter record) { @@ -111,7 +110,8 @@ String type = (String) map.get("type"); // 上传文件相对位置 String fileUrl = "helpInfo/" + UUID.randomUUID().toString().replace("-", "") + "." +type; String fileUrl = FilePathEnum.helpCenterContent + UUID.randomUUID().toString().replace("-", "") + "." + type; /* 上传新图片 */ String uploadFilePath = COSManager.getInstance().uploadFileByte(b, fileUrl).getUrl(); @@ -121,7 +121,6 @@ } } } String replaceHtml = replaceIframe(html); Long backId = helpCenter.getId(); @@ -167,7 +166,6 @@ String newContent = content.substring(tm + 7, content.length()); char qmark = '"'; int end = newContent.indexOf(qmark); place.put("end", end); @@ -175,10 +173,8 @@ String base64Img = newContent.substring(0, end); place.put("base64Img", base64Img); String header = compareStrStart + suffix+ ";" + compareStr +"," +base64Img; place.put("header", header); listMap.add(place); } @@ -245,7 +241,6 @@ return helpCenterMapper.countQuery(key, cid, state); } @Override @Cacheable(value = "helpCenterCache",key="'queryIdAndTitle-'+#pageId+'-'+#key+'-'+#cid") public List<HelpCenter> listValid(long pageId, int pageSize, String key, Long cid) { @@ -267,8 +262,6 @@ public HelpInfo getHelpInfoCache(Long id) { return getHelpInfo(id); } @Override @Transactional(rollbackFor=Exception.class) fanli/src/main/java/com/yeshi/fanli/service/impl/user/QrCodeServiceImpl.java
@@ -192,7 +192,7 @@ if (new File(targetPath).exists() && new File(targetPath).length() > 0) { String fileUrl = null; if (uid == null) { fileUrl = FilePathEnum.ercode.getPath() + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; fileUrl = FilePathEnum.invitePictureDemo.getPath() + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; } else { fileUrl = FilePathEnum.ercode.getPath() + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; } @@ -268,7 +268,7 @@ // 上传文件相对位置 String fileUrl = null; if (uid == null) { fileUrl = FilePathEnum.ercode.getPath() + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; fileUrl = FilePathEnum.invitePictureDemo.getPath() + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; } else { fileUrl = FilePathEnum.ercode.getPath() + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg"; } fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -1,12 +1,6 @@ package com.yeshi.fanli.service.impl.user; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; @@ -27,8 +21,6 @@ import com.yeshi.fanli.dao.mybatis.AccountMessageMapper; import com.yeshi.fanli.dao.mybatis.UserConnectHistoryMapper; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dto.user.wx.WXMPLoginData; import com.yeshi.fanli.dto.user.wx.WXMPLoginResult; import com.yeshi.fanli.dto.wx.WXAccountInfoDTO; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.BindingAccount; @@ -36,15 +28,12 @@ import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum; import com.yeshi.fanli.entity.bus.user.LoginResult; import com.yeshi.fanli.entity.bus.user.SMSHistory; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.UserAccountBindingHistory; import com.yeshi.fanli.entity.bus.user.UserConnectHistory; import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum; import com.yeshi.fanli.entity.bus.user.WeiXinUser; import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException; import com.yeshi.fanli.exception.user.ThreeSaleException; import com.yeshi.fanli.exception.user.UserAccountException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.money.extract.BindingAccountService; @@ -61,12 +50,10 @@ import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.FilePathEnum; import com.yeshi.fanli.util.FileUtil; import com.yeshi.fanli.util.RedisKeyEnum; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.ThreadUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory; import com.yeshi.fanli.util.wx.WXLoginUtil; @@ -472,112 +459,6 @@ } } @Override public void connectUsers(HttpSession session) throws UserAccountException { UserInfo mainUser = (UserInfo) session.getAttribute("WEIXIN_USERINFO"); UserInfo lessUser = (UserInfo) session.getAttribute("LAST_LOGIN_USER"); int lessUserLoginType = lessUser.getLoginType(); if (mainUser == null || lessUser == null || mainUser.getId() == null || lessUser.getId() == null) throw new UserAccountException(30001, "缺少打通账号"); mainUser = userInfoMapper.selectByPrimaryKeyForUpdate(mainUser.getId()); lessUser = userInfoMapper.selectByPrimaryKeyForUpdate(lessUser.getId()); session.removeAttribute("WEIXIN_USERINFO"); session.removeAttribute("LAST_LOGIN_USER"); if (mainUser == null || lessUser == null) throw new UserAccountException(30002, "缺少打通账号"); // 判断是否有绑定相同类型的账号 if (lessUserLoginType == 1) {// 次账号以淘宝登录 if (!StringUtil.isNullOrEmpty(mainUser.getPhone()) && !StringUtil.isNullOrEmpty(lessUser.getPhone()) && !lessUser.getPhone().equalsIgnoreCase(mainUser.getPhone())) throw new UserAccountException(30003, "请先解除其中一个账号的手机绑定"); } else if (lessUserLoginType == 3) {// 次账号以手机号登录 if (!StringUtil.isNullOrEmpty(mainUser.getOpenid()) && !StringUtil.isNullOrEmpty(lessUser.getOpenid()) && !lessUser.getOpenid().equalsIgnoreCase(mainUser.getOpenid())) throw new UserAccountException(30003, "请先解除其中一个账号的淘宝绑定"); } connectUsers(mainUser, lessUser); } @Transactional(rollbackFor = Exception.class) @Override public void connectUsers(UserInfo mainUser, UserInfo lessUser) throws UserAccountException { mainUser = userInfoMapper.selectByPrimaryKeyForUpdate(mainUser.getId()); lessUser = userInfoMapper.selectByPrimaryKeyForUpdate(lessUser.getId()); if (!StringUtil.isNullOrEmpty(mainUser.getOpenid()) && !StringUtil.isNullOrEmpty(lessUser.getOpenid())) throw new UserAccountException(9, "两个账号都绑定了淘宝,请解绑其中一个"); if (!StringUtil.isNullOrEmpty(mainUser.getPhone()) && !StringUtil.isNullOrEmpty(lessUser.getPhone())) throw new UserAccountException(9, "两个账号都绑定了手机号码,请解绑其中一个"); if (lessUser.getMyHongBao().compareTo(new BigDecimal("10")) >= 0 && mainUser.getMyHongBao().compareTo(new BigDecimal("10")) > 0) throw new UserAccountException(10, String.format("账户ID:%s 的资金超过10元,为保证资金安全请联系客服打通", lessUser.getId() + "")); // 判定是否绑定了同一支付宝 BindingAccount mainUserAccount = bindingAccountService.getBindingAccountByUidAndType(mainUser.getId(), BindingAccount.TYPE_ALIPAY); BindingAccount lessUserAccount = bindingAccountService.getBindingAccountByUidAndType(lessUser.getId(), BindingAccount.TYPE_ALIPAY); // 有不同的支付宝账号 boolean hasDiffrentAlipayAccount = false; if (mainUserAccount != null && lessUserAccount != null) { if (!mainUserAccount.getAccount().equalsIgnoreCase(lessUserAccount.getAccount())) hasDiffrentAlipayAccount = true; } if (hasDiffrentAlipayAccount) throw new UserAccountException(10, "两个账户都绑定了支付宝,请先解绑其中一个"); // 判定是否有重叠的账号 UserInfo updateUser = new UserInfo(mainUser.getId()); if (!StringUtil.isNullOrEmpty(lessUser.getOpenid())) { updateUser.setOpenid(lessUser.getOpenid()); updateUser.setTbName(lessUser.getTbName()); updateUser.setTbPic(lessUser.getTbPic()); } if (!StringUtil.isNullOrEmpty(lessUser.getPhone())) { updateUser.setPhone(lessUser.getPhone()); } // 备份原来的用户信息 String logUrl = backupUserImportantInfo(lessUser.getId()); // 添加打通记录 UserConnectHistory userConnectHistory = new UserConnectHistory(); userConnectHistory.setCreateTime(new Date()); userConnectHistory.setLessUser(lessUser); userConnectHistory.setMainUser(mainUser); userConnectHistory.setLogUrl(logUrl); userConnectHistoryMapper.insertSelective(userConnectHistory); userInfoMapper.updateByPrimaryKeySelective(updateUser); // 删除原来的账号 UserInfo updateLessUser = new UserInfo(lessUser.getId()); updateLessUser.setState(UserInfo.STATE_DELETE); updateLessUser.setStateDesc("账号被打通删除"); userInfoMapper.updateByPrimaryKeySelective(updateLessUser); // 融合业务 userInfoMapper.connectUser(mainUser.getId(), lessUser.getId()); // 查询是否有多余的新人红包 int subCount = 0; int addCount = 0; userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId()); userInfoDeleteRecordService.addDeleteRecord(lessUser.getId(), UserInfo.STATE_DELETE, "删除:账号被打通删除"); } /** * 根据系统与unionid寻找用户 @@ -887,46 +768,6 @@ } @Override public String backupUserImportantInfo(Long uid) { String logPath = String.format(FileUtil.getCacheDir() + "/benfen_%s_" + uid + ".log", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMddHHmmss")); // 备份用户信息 UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid); // TODO 备份资金明细 // 备份邀请关系 List<ThreeSale> threeSaleList = new ArrayList<>(); FileWriter fw = null; try { // 设置为:True,表示写入的时候追加数据 fw = new FileWriter(new File(logPath), true); fw.write("#UserInfo" + "\r\n"); fw.write(JsonUtil.getSimpleGsonWithDate().toJson(user) + "\r\n"); fw.write("#ThreeSale" + "\r\n"); fw.write(JsonUtil.getSimpleGsonWithDate().toJson(threeSaleList) + "\r\n"); fw.close(); String logUrl = COSManager.getInstance() .uploadFile(new File(logPath), FilePathEnum.beifen.getPath() + new File(logPath).getName()).getUrl(); return logUrl; } catch (IOException e) { e.printStackTrace(); } finally { if (new File(logPath).exists()) new File(logPath).delete(); } return null; } @Override public void clearUserPortrait(Long uid) { if (uid == null) return; @@ -1132,7 +973,7 @@ InputStream asInputStream = HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()); if (asInputStream != null) { FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String.format(FilePathEnum.userPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) portrait = result.getUrl(); @@ -1357,7 +1198,7 @@ LogHelper.test("微信头像下载失败: " + weiXinUser.getUnionid() + " " + headimgurl); } else { FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String .format(FilePathEnum.userPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); .format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) { headimgurl = result.getUrl(); } else { @@ -1417,7 +1258,7 @@ InputStream asInputStream = HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()); if (asInputStream != null) { FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String .format(FilePathEnum.userPortrait.getPath() +"%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); .format(FilePathEnum.userWXPortrait.getPath() +"%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) portrait = result.getUrl(); } else { fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java
@@ -449,7 +449,7 @@ LogHelper.test("微信头像下载失败: " + weiXinUser.getUnionid() + " " + headimgurl); } else { FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String.format( FilePathEnum.userPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) { headimgurl = result.getUrl(); } else { @@ -568,7 +568,7 @@ LogHelper.test("微信头像下载失败: " + weiXinUser.getUnionid() + " " + headimgurl); } else { FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String.format( FilePathEnum.userPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) { headimgurl = result.getUrl(); } else { fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserAccountService.java
@@ -45,29 +45,6 @@ public LoginResult loginNoInstallWX(AcceptData acceptData, String appId, String code, String phone, UserInfo tbUserInfo, int loginType) throws UserAccountException; /** * 打通微信账号与其他类型的一个账号 * * @param session * @throws UserAccountException */ public void connectUsers(HttpSession session) throws UserAccountException; /** * 备份重要的用户信息 * * @param uid */ public String backupUserImportantInfo(Long uid); /** * 打通两个账号,以主账号为主 * * @param mainUser * @param lessUser * @throws UserAccountException */ public void connectUsers(UserInfo mainUser, UserInfo lessUser) throws UserAccountException; /** * 注册用户 fanli/src/main/java/com/yeshi/fanli/util/FilePathEnum.java
@@ -1,37 +1,41 @@ package com.yeshi.fanli.util; public enum FilePathEnum { userPortrait("/img/user/", "用户头像"), // -- /portrait/wx/ -- /wx/headImg/ userERcode("/img/user/erCode/", "用户上传微信二维码"), userComplaint("/img/UserComplaint/", "用户吐槽图片"), userRankings("/userRankings/", "奖金排行榜假用户头像"), beifen("/beifen/", ""), activityUserPortrait("/img/GoodsSubClass/", "活动用户头像"), apk("/apk/admin/", "上传Apk安装包"), // -- /img/admin/ section("/section/", "后台上传图片路径"), // -- /img/admin/ // 用户相关 userPortrait("/user/img/portrait/", "用户头像"), userWXPortrait("/user/img/portrait_wx/", "用户微信头像"), userERcode("/user/img/ercode/", "用户上传微信二维码"), userComplaint("/user/img/user_complaint/", "用户吐槽图片"), activityUserPortrait("/user/img/dynamic/portrait/", "动态用户头像"), ercode("/user/img/invite/", "分享邀请图二维码图片"), shareGoods("/user/img/sharegoods/", "分享商品图片"), shareXCX("/user/img/sharegoods_xcx/", "分享小程序图片"), shareGoods("/sharegoods/", "分享商品图片"), shareXCX("/sharegoods/xcx/", "分享小程序图片"), ercode("/ercode/", "分享邀请图二维码图片"), invite("/img/invite/", "分享邀请好友图片"), // 编辑相关 apk("/editor/apk/", "上传Apk安装包"), // -- /img/admin/ section("/editor/upload_imgs/", "后台上传图片路径"), // -- /img/admin/ helpClass("/img/HelpClass/", "帮助中心分类图片"), goodsClassOld("/ClassImg/", "商品一级分类图片-老版"), goodsClass("/img/GoodsClass/", "商品一级分类图片"), goodsSubClass("/img/GoodsSubClass/", "商品二级以下分类图片"), lable("/LableImg/", "标签图片"), taoBaoShop("/img/TaoBaoShop/", "淘宝店铺图片"), userRankings("/editor/img/user_rankings/", "奖金排行榜假用户头像"), invite("/editor/img/invite/", "分享邀请好友图片素材"), invitePictureDemo("/editor/img/invite_demo/", "动态中生成的邀请图demo"), brand("/img/brand/", "品牌图片"), article("/img/article/", "学院文章图片"), floatAD("/img/FloatAD/", "首页弹框图片"), homeNavbar("/img/HomeNavbar/", "导航栏图片"), specialCard("/img/SpecialCard/", "专题管理图片"), special("/img/special/", "专题图片"), swiper("/img/swiperPic/", "轮播图片"), banLiShopClass("/img/shopGoodsClass/", "板栗商城分类图片"), banLiShopGoods("/img/BanLiShopGoods/", "板栗商城商品图片"); helpClass("/editor/img/help_class/", "帮助中心分类图片"), helpCenterContent("/editor/img/help_center/", "帮助中心内容图片"), goodsClassOld("/editor/img/class_old/", "商品一级分类图片-老版"), goodsClass("/editor/img/goods_class/", "商品一级分类图片"), goodsSubClass("/editor/img/goods_sub_class/", "商品二级以下分类图片"), lable("/editor/img/lable/", "标签图片"), taoBaoShop("/editor/img/taobao_shop/", "淘宝店铺图片"), brand("/editor/img/brand/", "品牌图片"), article("/editor/img/college/article/", "学院文章图片"), floatAD("/editor/img/float_ad/", "首页弹框图片"), homeNavbar("/editor/img/home_navbar/", "导航栏图片"), specialCard("/editor/img/special_card/", "专题管理图片"), special("/editor/img/special/", "专题图片"), swiper("/editor/img/swiper_pic/", "轮播图片"), banLiShopClass("/editor/img/shop/goods_class/", "板栗商城分类图片"), banLiShopGoods("/editor/img/shop/goods/", "板栗商城商品图片"); private final String path; private final String desc; fanli/src/main/java/com/yeshi/fanli/util/wx/WXLoginUtil.java
@@ -103,7 +103,7 @@ } FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String.format(FilePathEnum.userPortrait.getPath() + "%s_%s.jpg", user.getUnionid(), System.currentTimeMillis() + "")); String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", user.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) { user.setHeadimgurl(result.getUrl()); // COS删除其余头像