admin
2019-03-15 c9f28b430799cc8d40c7a7d99fd0f0eeecff6a5c
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -4,6 +4,7 @@
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -19,36 +20,22 @@
import com.google.gson.Gson;
import com.qcloud.cos.model.COSObjectSummary;
import com.qcloud.cos.model.ObjectListing;
import com.yeshi.fanli.dao.mybatis.AccountDetailsMapper;
import com.yeshi.fanli.dao.mybatis.AccountMessageMapper;
import com.yeshi.fanli.dao.mybatis.BindingAccountMapper;
import com.yeshi.fanli.dao.mybatis.MoneyRecordMapper;
import com.yeshi.fanli.dao.mybatis.PidOrderMapper;
import com.yeshi.fanli.dao.mybatis.ThreeSaleMapper;
import com.yeshi.fanli.dao.mybatis.UserConnectHistoryMapper;
import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
import com.yeshi.fanli.dao.mybatis.hongbao.HongBaoMapper;
import com.yeshi.fanli.dao.mybatis.order.OrderItemMapper;
import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
import com.yeshi.fanli.entity.bus.user.AccountDetails;
import com.yeshi.fanli.entity.bus.user.AccountMessage;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
import com.yeshi.fanli.entity.bus.user.HongBao;
import com.yeshi.fanli.entity.bus.user.LoginResult;
import com.yeshi.fanli.entity.bus.user.MoneyRecord;
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.OrderItem;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserConnectHistory;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.taobao.PidOrder;
import com.yeshi.fanli.exception.UserAccountException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.msg.UserAccountMsgNotificationService;
import com.yeshi.fanli.service.inter.user.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
import com.yeshi.fanli.service.inter.user.UserAccountService;
@@ -57,7 +44,6 @@
import com.yeshi.fanli.util.FileUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.AccountDetailsFactory;
import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory;
import com.yeshi.fanli.util.wx.WXLoginUtil;
@@ -70,36 +56,16 @@
   private UserInfoMapper userInfoMapper;
   @Resource
   private BindingAccountMapper bindingAccountMapper;
   private BindingAccountService bindingAccountService;
   @Resource
   private UserConnectHistoryMapper userConnectHistoryMapper;
   @Resource
   private AccountDetailsMapper accountDetailsMapper;
   @Resource
   private HongBaoMapper hongBaoMapper;
   @Resource
   private OrderMapper orderMapper;
   @Resource
   private OrderItemMapper orderItemMapper;
   @Resource
   private ThreeSaleMapper threeSaleMapper;
   @Resource
   private PidOrderMapper pidOrderMapper;
   @Resource
   private HongBaoService hongBaoService;
   private ThreeSaleSerivce threeSaleSerivce;
   @Resource
   private AccountMessageMapper accountMessageMapper;
   @Resource
   private MoneyRecordMapper moneyRecordMapper;
   @Resource
   private SpreadUserImgService spreadUserImgService;
@@ -198,7 +164,7 @@
            if (lastUser == null) {
               if (userInfo != null) {
                  // 使分销关系生效
                  threeSaleMapper.effectThreeSale(userInfo.getId());
                  threeSaleSerivce.effective(userInfo);
                  // 更新头像与昵称
                  UserInfo updateUserInfo = new UserInfo(userInfo.getId());
                  updateUserInfo.setNickName(weiXinUser.getNickname());
@@ -274,7 +240,7 @@
                     session.removeAttribute("LAST_LOGIN_USER");
                     // 使分销关系生效
                     threeSaleMapper.effectThreeSale(userInfo.getId());
                     threeSaleSerivce.effective(userInfo);
                     return new LoginResult(LoginResult.TYPE_NORMAL, userInfo);
                  } else {// 两个账号拥有不同的UID
@@ -288,7 +254,7 @@
                     result.setLessUser(lastUser);
                     // 使分销关系生效
                     threeSaleMapper.effectThreeSale(userInfo.getId());
                     threeSaleSerivce.effective(userInfo);
                     return result;
                  }
@@ -504,27 +470,16 @@
         throw new UserAccountException(10, String.format("账户ID:%s 的资金超过10元,为保证资金安全请联系客服打通", lessUser.getId() + ""));
      // 判定是否绑定了同一支付宝
      List<BindingAccount> mainUserAccountList = bindingAccountMapper.selectByUid(mainUser.getId());
      if (mainUserAccountList != null)
         for (int i = 0; i < mainUserAccountList.size(); i++) {
            if (mainUserAccountList.get(i).getType() == BindingAccount.TYPE_WXPAY) {
               mainUserAccountList.remove(i);
               i--;
            }
         }
      List<BindingAccount> lessUserAccountList = bindingAccountMapper.selectByUid(lessUser.getId());
      if (lessUserAccountList != null)
         for (int i = 0; i < lessUserAccountList.size(); i++) {
            if (lessUserAccountList.get(i).getType() == BindingAccount.TYPE_WXPAY) {
               lessUserAccountList.remove(i);
               i--;
            }
         }
      BindingAccount mainUserAccount = bindingAccountService.getBindingAccountByUidAndType(mainUser.getId(),
            BindingAccount.TYPE_ALIPAY);
      BindingAccount lessUserAccount = bindingAccountService.getBindingAccountByUidAndType(lessUser.getId(),
            BindingAccount.TYPE_ALIPAY);
      // 有不同的支付宝账号
      boolean hasDiffrentAlipayAccount = false;
      if (mainUserAccountList != null && mainUserAccountList.size() > 0 && lessUserAccountList != null
            && lessUserAccountList.size() > 0) {
         if (!mainUserAccountList.get(0).getAccount().equalsIgnoreCase(lessUserAccountList.get(0).getAccount()))
      if (mainUserAccount != null && lessUserAccount != null) {
         if (!mainUserAccount.getAccount().equalsIgnoreCase(lessUserAccount.getAccount()))
            hasDiffrentAlipayAccount = true;
      }
@@ -564,50 +519,8 @@
      userInfoMapper.connectUser(mainUser.getId(), lessUser.getId());
      // 查询是否有多余的新人红包
      List<HongBao> list = hongBaoMapper.selectByUidAndType(mainUser.getId(), HongBao.TYPE_XINREN);
      int subCount = 0;
      int addCount = 0;
      for (HongBao hb : list) {
         if (hb.getMoney().compareTo(new BigDecimal(0)) > 0)
            addCount++;
         if (hb.getMoney().compareTo(new BigDecimal(0)) < 0)
            subCount++;
      }
      // 有2个或者2个以上的新人红包
      if (addCount - subCount > 1) {
         // 扣除一个新人红包
         AccountDetails accountDetails = new AccountDetails();
         accountDetails.setCreateTime(TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
         accountDetails.setExtract(null);
         accountDetails.setMoney("-" + list.get(1).getMoney().toString());
         accountDetails.setOrderItem(null);
         accountDetails.setTitle(" 账号合并扣除重复新人红包");
         accountDetails.setType(AccountDetailsFactory.TUIKUAN);
         accountDetails.setUserInfo(mainUser);
         accountDetailsMapper.insertSelective(accountDetails);
         AccountMessage accountMessage = new AccountMessage();
         accountMessage.setContent(" 账号合并扣除重复新人红包" + list.get(1).getMoney().toString() + "元");
         accountMessage.setCreateTime(System.currentTimeMillis());
         accountMessage.setIsOpen(false);
         accountMessage.setSystemMsgId(0);
         accountMessage.setTitle(" 账号合并扣除重复新人红包");
         accountMessage.setUserInfo(mainUser);
         accountMessageMapper.insertSelective(accountMessage);
         userInfoMapper.subHongBaoByUid(mainUser.getId(), list.get(1).getMoney());
         HongBao hongBao = new HongBao(mainUser, new BigDecimal(0).subtract(list.get(1).getMoney()), null,
               HongBao.TYPE_XINREN, HongBao.STATE_YILINGQU, System.currentTimeMillis(), System.currentTimeMillis(),
               System.currentTimeMillis(), null, "账号合并扣除");
         hongBaoMapper.insertSelective(hongBao);
         MoneyRecord moneyRecord = new MoneyRecord(mainUser, hongBao, list.get(1).getMoney(), "账号合并扣除重复新人红包", "账号合并",
               System.currentTimeMillis(), 2);
         moneyRecordMapper.insertSelective(moneyRecord);
      }
      userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
   }
@@ -749,9 +662,6 @@
         updateUserInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName() + user.getId());
         userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
      }
      // 添加新人红包
      hongBaoService.setNewUserHongBaoMyBatis(user, 1);
   }
   @Override
@@ -901,19 +811,10 @@
      // 备份用户信息
      UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
      // 备份资金明细
      List<AccountDetails> accountDetailsList = accountDetailsMapper.selectByUid(uid);
      // 备份红包信息
      List<HongBao> hongBaoList = hongBaoMapper.selectByUid(uid);
      // 备份订单,子订单信息
      List<Order> orderList = orderMapper.selectByUid(uid);
      List<OrderItem> orderItemList = orderItemMapper.selectByUid(uid);
      // TODO 备份资金明细
      // 备份邀请关系
      List<ThreeSale> threeSaleList = threeSaleMapper.selectByUid(uid);
      // 备份分享赚
      List<PidOrder> pidOrderList = pidOrderMapper.selectByUid(uid);
      List<ThreeSale> threeSaleList = new ArrayList<>();
      FileWriter fw = null;
      try {
@@ -923,23 +824,8 @@
         fw.write("#UserInfo" + "\r\n");
         fw.write(JsonUtil.getSimpleGsonWithDate().toJson(user) + "\r\n");
         fw.write("#AccountDetails" + "\r\n");
         fw.write(JsonUtil.getSimpleGsonWithDate().toJson(accountDetailsList) + "\r\n");
         fw.write("#HongBao" + "\r\n");
         fw.write(JsonUtil.getSimpleGsonWithDate().toJson(hongBaoList) + "\r\n");
         fw.write("#Order" + "\r\n");
         fw.write(JsonUtil.getSimpleGsonWithDate().toJson(orderList) + "\r\n");
         fw.write("#OrderItem" + "\r\n");
         fw.write(JsonUtil.getSimpleGsonWithDate().toJson(orderItemList) + "\r\n");
         fw.write("#ThreeSale" + "\r\n");
         fw.write(JsonUtil.getSimpleGsonWithDate().toJson(threeSaleList) + "\r\n");
         fw.write("#PidOrder" + "\r\n");
         fw.write(JsonUtil.getSimpleGsonWithDate().toJson(pidOrderList) + "\r\n");
         fw.close();