admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/util/factory/msg/MsgMoneyDetailFactory.java
@@ -1,390 +1,503 @@
package com.yeshi.fanli.util.factory.msg;
import java.math.BigDecimal;
import java.util.Date;
import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail;
import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
import com.yeshi.fanli.entity.bus.user.AlipayAccountValidNormalHistory;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.ExtractWeiXinRecord;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
public class MsgMoneyDetailFactory {
   /**
    * 提现申请消息
    *
    * @param extract
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createExtractApplyMsg(Extract extract, Long uid, String beiZhu) {
      if (extract == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setExtract(extract);
      detail.setMoney(extract.getMoney());
      detail.setMsgType(MsgTypeMoneyTypeEnum.extract);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setStateDesc("人工审核中");
      return detail;
   }
   /**
    * 提现成功消息
    *
    * @param extract
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createExtractSuccessMsg(Extract extract, Long uid, String beiZhu) {
      if (extract == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setExtract(extract);
      detail.setMoney(extract.getMoney());
      detail.setMsgType(MsgTypeMoneyTypeEnum.extract);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setStateDesc("提现成功");
      return detail;
   }
   /**
    *  自动提现
    *
    * @param extract
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createExtractAutoMsg(ExtractWeiXinRecord extractRecord, String stateDesc,
         String desc, String beiZhu) {
      if (extractRecord == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setUser(new UserInfo(extractRecord.getUid()));
      detail.setRead(false);
      detail.setMoney(extractRecord.getMoney());
      detail.setMsgType(MsgTypeMoneyTypeEnum.extractAutoWX);
      detail.setExtract(new Extract(extractRecord.getId()));
      detail.setStateDesc(stateDesc);
      detail.setDesc(desc);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      return detail;
   }
   /**
    * 提现失败消息
    *
    * @param extract
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createExtractFailMsg(Extract extract, Long uid, String beiZhu) {
      if (extract == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setExtract(extract);
      detail.setMoney(extract.getMoney());
      detail.setMsgType(MsgTypeMoneyTypeEnum.extract);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setStateDesc("提现失败");
      return detail;
   }
   /**
    * 账号验证消息
    *
    * @param valid
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createAlipayAccountValidMsg(AlipayAccountValidNormalHistory valid, Long uid,
         String appName, BigDecimal money, String beiZhu) {
      if (valid == null || uid == null || appName == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setAlipayAccountValid(valid);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setStateDesc(String.format("你的支付宝将收到一笔,理由\"来自于%s的支付宝验证打款\"和对方账户\"%s支付宝验证\"的%s元转账。", appName, appName,
            MoneyBigDecimalUtil.getWithNoZera(money)).toString());
      detail.setMsgType(MsgTypeMoneyTypeEnum.extractValid);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      return detail;
   }
   /**
    * 返利到账
    *
    * @param money
    * @param balance
    * @param orderId
    * @param goodsCount
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createFailiMsg(BigDecimal money, BigDecimal balance, String orderId, int orderType,
         int goodsCount, Long uid, String beiZhu) {
      if (money == null || balance == null || orderId == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setGoodsCount(goodsCount);
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.fanli);
      detail.setOrderId(orderId);
      detail.setOrderType(orderType);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      return detail;
   }
   /**
    * 返利维权
    *
    * @param uid
    * @param orderId
    * @param money
    * @param balance
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createFailiWeiQuanMsg(Long uid, String orderId, int orderType, BigDecimal money,
         BigDecimal balance, String beiZhu) {
      if (money == null || orderId == null || money == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.fanliWeiQuan);
      detail.setOrderId(orderId);
      detail.setOrderType(orderType);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      return detail;
   }
   /**
    * 邀请赚到账
    *
    * @param money
    * @param balance
    * @param orderCount
    * @param goodsCount
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createInviteMsg(BigDecimal money, BigDecimal balance, int orderType, int orderCount,
         int goodsCount, Long uid, String beiZhu) {
      if (money == null || balance == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setGoodsCount(goodsCount);
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.invite);
      detail.setOrderCount(orderCount);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setOrderType(orderType);
      return detail;
   }
   /**
    * 邀请赚维权
    *
    * @param uid
    * @param orderId
    * @param money
    * @param balance
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createInviteWeiQuanMsg(Long uid, String orderId, int orderType, BigDecimal money,
         BigDecimal balance, String beiZhu) {
      if (money == null || orderId == null || money == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.inviteWeiQuan);
      detail.setOrderId(orderId);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setOrderType(orderType);
      return detail;
   }
   /**
    * 分享赚到账
    *
    * @param money
    * @param balance
    * @param orderCount
    * @param goodsCount
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createShareMsg(BigDecimal money, BigDecimal balance, int orderType, int orderCount,
         int goodsCount, Long uid, String beiZhu) {
      if (money == null || balance == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setGoodsCount(goodsCount);
      detail.setOrderType(orderType);
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.share);
      detail.setOrderCount(orderCount);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      return detail;
   }
   /**
    * 分享赚维权
    *
    * @param uid
    * @param orderId
    * @param money
    * @param balance
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createShareWeiQuanMsg(Long uid, String orderId, int orderType, BigDecimal money,
         BigDecimal balance, String beiZhu) {
      if (money == null || orderId == null || money == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.shareWeiQuan);
      detail.setOrderId(orderId);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setOrderType(orderType);
      return detail;
   }
   public static MsgMoneyDetail createOrderRewardMsg(Long uid, String orderId, int orderType, BigDecimal money,
         BigDecimal balance, String beiZhu) {
      if (money == null || orderId == null || money == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.orderReward);
      detail.setOrderId(orderId);
      detail.setRead(false);
      detail.setOrderType(orderType);
      detail.setUser(new UserInfo(uid));
      return detail;
   }
   public static MsgMoneyDetail createSystemEqualizeMsg(Long uid, String reason, BigDecimal money, BigDecimal balance,
         String beiZhu) {
      if (money == null || money == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.systemEqualize);
      detail.setOrderId(reason);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      return detail;
   }
   public static MsgMoneyDetail createElmeFanliMsg(Long uid, String orderId, BigDecimal money, BigDecimal balance,
         String beiZhu) {
      if (money == null || money == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.fanliElme);
      detail.setOrderId(orderId);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      return detail;
   }
   /**
    * 红包相关信息
    * @param uid
    * @param type
    * @param content
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createRedPackMsg(Long uid, MsgTypeMoneyTypeEnum type, String content, String beiZhu) {
      if (uid == null || type == null || StringUtil.isNullOrEmpty(content))
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setUser(new UserInfo(uid));
      detail.setRead(false);
      detail.setContent(content);
      detail.setMsgType(type);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      return detail;
   }
}
package com.yeshi.fanli.util.factory.msg;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.yeshi.utils.StringUtil;
import com.google.gson.Gson;
import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail;
import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
import com.yeshi.fanli.entity.bus.user.AlipayAccountValidNormalHistory;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.util.Constant;
import org.yeshi.utils.TimeUtil;
import com.yeshi.common.vo.ClientTextStyleVO;
import com.yeshi.fanli.vo.msg.CommonMsgItemVO;
import com.yeshi.fanli.vo.msg.CommonMsgItemVOFactory;
public class MsgMoneyDetailFactory {
   /**
    * 账号验证消息
    *
    * @param valid
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createExtractMsg(String stateDesc, Long uid, Extract extract, String reason,
         String alipayNo, String beizu) {
      if (extract == null || uid == null)
         return null;
      String name = filterName(extract.getName());
      String account = filterAccount(extract.getAccount());
      List<CommonMsgItemVO> listMsg = new ArrayList<>();
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("提现账号", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(String.format("支付宝:%s-姓名:%s",account, name), ClientTextStyleVO.COLOR_CONTENT)));
      List<ClientTextStyleVO> contentList = new ArrayList<>();
      contentList.add(new ClientTextStyleVO("¥" + extract.getMoney().setScale(2, BigDecimal.ROUND_DOWN), ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      if (!StringUtil.isNullOrEmpty(alipayNo)) {
         contentList.add(new ClientTextStyleVO(String.format("&支付宝订单号: %s", "*" + alipayNo.substring(alipayNo.length() - 10)), ClientTextStyleVO.COLOR_CONTENT));
      }
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("提现金额", ClientTextStyleVO.COLOR_TITLE),contentList));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("提现状态", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(stateDesc, ClientTextStyleVO.COLOR_CONTENT)));
      if (!StringUtil.isNullOrEmpty(reason)) {
         listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("原因", ClientTextStyleVO.COLOR_TITLE),
               new ClientTextStyleVO(reason, ClientTextStyleVO.COLOR_CONTENT)));
      }
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("备注", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(beizu, ClientTextStyleVO.COLOR_CONTENT)));
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBeiZhu(reason);
      detail.setCreateTime(new Date());
      detail.setExtract(extract);
      detail.setMoney(extract.getMoney());
      detail.setMsgType(MsgTypeMoneyTypeEnum.extract);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setStateDesc(stateDesc);
      detail.setExtraInfo(new Gson().toJson(listMsg));
      return detail;
   }
   /**
    * 账号验证消息
    *
    * @param valid
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createAlipayAccountValidMsg(AlipayAccountValidNormalHistory valid, Long uid,
         String appName, BigDecimal money, String limitDay, boolean change) {
      if (valid == null || uid == null || appName == null)
         return null;
      String changeWay = "绑定";
      if (change) {
         changeWay = "修改";
      }
      String name = filterName(valid.getName());
      String account = filterAccount(valid.getAccount());
      List<CommonMsgItemVO> listMsg = new ArrayList<>();
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("验证状态", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(String.format("提现账号%s成功", changeWay), ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("提现账号", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(String.format("支付宝:%s-姓名:%s",account, name), ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("打款金额", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO("¥" + money.setScale(2, BigDecimal.ROUND_DOWN), ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT)));
      List<ClientTextStyleVO> contentList2 = new ArrayList<>();
      contentList2.add(new ClientTextStyleVO("提现账号收到一笔,来自", ClientTextStyleVO.COLOR_CONTENT));
      contentList2.add(new ClientTextStyleVO(appName, ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList2.add(new ClientTextStyleVO("的转账,即绑定成功", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("说明", ClientTextStyleVO.COLOR_TITLE),contentList2));
      List<ClientTextStyleVO> contentList = new ArrayList<>();
      contentList.add(new ClientTextStyleVO(String.format("成功%s的提现账号", changeWay), ClientTextStyleVO.COLOR_CONTENT));
      contentList.add(new ClientTextStyleVO( limitDay+"", ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList.add(new ClientTextStyleVO("内无法修改", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("备注", ClientTextStyleVO.COLOR_TITLE),contentList));
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setAlipayAccountValid(valid);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.extractValid);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setExtraInfo(new Gson().toJson(listMsg));
      return detail;
   }
   /**
    * 账号验证消息
    *
    * @param valid
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createAlipayAccountValidFail(AlipayAccountValidNormalHistory valid, Long uid,
         String appName, BigDecimal money, int limitDay, boolean change) {
      if (valid == null || uid == null || appName == null)
         return null;
      String changeWay = "绑定";
      if (change) {
         changeWay = "修改";
      }
      List<CommonMsgItemVO> listMsg = new ArrayList<>();
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("验证状态", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(String.format("提现账号%s失败", changeWay), ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("提现账号", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(String.format("支付宝:%s-姓名:%s",valid.getAccount(), valid.getName()), ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("原因", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO("请仔细核对填写账号是否有误或距上一次修改时长是否超过30天", ClientTextStyleVO.COLOR_CONTENT)));
      if (!change) {
         listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("备注", ClientTextStyleVO.COLOR_TITLE),
               new ClientTextStyleVO("无", ClientTextStyleVO.COLOR_CONTENT)));
      } else {
         List<ClientTextStyleVO> contentList = new ArrayList<>();
         contentList.add(new ClientTextStyleVO("距下一次修改时间还有", ClientTextStyleVO.COLOR_CONTENT));
         contentList.add(new ClientTextStyleVO(limitDay+"", ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
         contentList.add(new ClientTextStyleVO("天内无法修改", ClientTextStyleVO.COLOR_CONTENT));
         listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("备注", ClientTextStyleVO.COLOR_TITLE),contentList));
      }
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setAlipayAccountValid(valid);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.extractValid);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setExtraInfo(new Gson().toJson(listMsg));
      return detail;
   }
   /**
    * 返利到账
    *
    * @param money
    * @param balance
    * @param orderId
    * @param goodsCount
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail fanLiOrderReceivedMsg(BigDecimal money, BigDecimal balance, String orderId, int source,
          int goodsCount, Long uid, Date downTime, boolean useCoupon) {
      if (money == null || balance == null || orderId == null || uid == null)
         return null;
      String fanliName = "自购返利";
      String sourceName = Constant.getSourceName(source) + "-返利订单";
      if (useCoupon) {
         fanliName = "使用返利奖励券";
      }
      List<CommonMsgItemVO> listMsg = new ArrayList<>();
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账详情", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(sourceName, ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("订单号", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(orderId, ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("下单时间", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(TimeUtil.formatDate(downTime), ClientTextStyleVO.COLOR_CONTENT)));
      List<ClientTextStyleVO> contentList = new ArrayList<>();
      contentList.add(new ClientTextStyleVO("共", ClientTextStyleVO.COLOR_CONTENT));
      contentList.add(new ClientTextStyleVO(goodsCount + "", ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList.add(new ClientTextStyleVO("件商品", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("商品数量", ClientTextStyleVO.COLOR_TITLE), contentList));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账类目", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(fanliName, ClientTextStyleVO.COLOR_CONTENT)));
      List<ClientTextStyleVO> contentList2 = new ArrayList<>();
      contentList2.add(new ClientTextStyleVO("¥" + money.setScale(2, BigDecimal.ROUND_DOWN), ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList2.add(new ClientTextStyleVO("(账户余额¥"+ balance.setScale(2, BigDecimal.ROUND_DOWN) + ")", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账金额", ClientTextStyleVO.COLOR_TITLE), contentList2));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("备注", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO("如有疑问请联系人工客服",   ClientTextStyleVO.COLOR_CONTENT)));
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setCreateTime(new Date());
      detail.setGoodsCount(goodsCount);
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.fanli);
      detail.setOrderId(orderId);
      detail.setOrderType(source);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setExtraInfo(new Gson().toJson(listMsg));
      return detail;
   }
   /**
    * 返利到账
    *
    * @param money
    * @param balance
    * @param orderId
    * @param goodsCount
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail shareOrderReceivedMsg(BigDecimal money, BigDecimal balance, int source, Long uid, Date receivedDate) {
      if (money == null || balance == null || uid == null)
         return null;
      String sourceName = Constant.getSourceName(source) + "-分享订单";
      List<CommonMsgItemVO> listMsg = new ArrayList<>();
      List<ClientTextStyleVO> contentList = new ArrayList<>();
      contentList.add(new ClientTextStyleVO(TimeUtil.getYearOnlyYYYY(receivedDate)+ "年", ClientTextStyleVO.COLOR_CONTENT));
      contentList.add(new ClientTextStyleVO(TimeUtil.getMonthOnlyMM(receivedDate), ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList.add(new ClientTextStyleVO("月", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("结算月度", ClientTextStyleVO.COLOR_TITLE), contentList));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账详情", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(sourceName, ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账类目", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO("分享奖金", ClientTextStyleVO.COLOR_CONTENT)));
      List<ClientTextStyleVO> contentList2 = new ArrayList<>();
      contentList2.add(new ClientTextStyleVO("¥" + money.setScale(2, BigDecimal.ROUND_DOWN), ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList2.add(new ClientTextStyleVO("(账户余额¥"+ balance.setScale(2, BigDecimal.ROUND_DOWN) + ")", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账金额", ClientTextStyleVO.COLOR_TITLE), contentList2));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("备注", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO("如有疑问请联系人工客服",   ClientTextStyleVO.COLOR_CONTENT)));
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.share);
      detail.setOrderType(source);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setExtraInfo(new Gson().toJson(listMsg));
      return detail;
   }
   /**
    * 返利维权
    *
    * @param uid
    * @param orderId
    * @param money
    * @param balance
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createOrderWeiQuanMsg(Long uid, String orderId, int source, BigDecimal money,
         BigDecimal fanliMoney, int goodsCount, Date downTime, int type) {
      if (money == null || orderId == null || money == null || uid == null)
         return null;
      MsgTypeMoneyTypeEnum typeEnum = null;
      String sourceName = Constant.getSourceName(source);
      if (Constant.TYPE_REBATE == type) {
         sourceName += "-返利订单";
         typeEnum = MsgTypeMoneyTypeEnum.fanliWeiQuan;
      } else if (Constant.TYPE_SHAER == type) {
         sourceName += "-分享订单";
         typeEnum = MsgTypeMoneyTypeEnum.shareWeiQuan;
      }
      String weiquan = "订单售后";
      String weiquanMoney = "全额退回";
      if (fanliMoney.compareTo(money) > 0) {
         weiquan = "订单部分售后";
         weiquan = "部分退回";
      }
      List<CommonMsgItemVO> listMsg = new ArrayList<>();
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("退回详情", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(sourceName, ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("订单号", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(orderId, ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("下单时间", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(TimeUtil.formatDate(downTime), ClientTextStyleVO.COLOR_CONTENT)));
      List<ClientTextStyleVO> contentList = new ArrayList<>();
      contentList.add(new ClientTextStyleVO("共", ClientTextStyleVO.COLOR_CONTENT));
      contentList.add(new ClientTextStyleVO(goodsCount + "", ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList.add(new ClientTextStyleVO("件商品", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("商品数量", ClientTextStyleVO.COLOR_TITLE), contentList));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("退回原因", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(weiquan, ClientTextStyleVO.COLOR_CONTENT)));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账金额", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO("¥" +fanliMoney.setScale(2, BigDecimal.ROUND_DOWN) + "(原到账金额)", ClientTextStyleVO.COLOR_CONTENT)));
      List<ClientTextStyleVO> contentList2 = new ArrayList<>();
      contentList2.add(new ClientTextStyleVO("¥" + money.setScale(2, BigDecimal.ROUND_DOWN), ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList2.add(new ClientTextStyleVO("("+ weiquanMoney + ")", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("退回金额", ClientTextStyleVO.COLOR_TITLE), contentList2));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("备注", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO("如有疑问请联系人工客服",   ClientTextStyleVO.COLOR_CONTENT)));
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(typeEnum);
      detail.setOrderId(orderId);
      detail.setOrderType(source);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setExtraInfo(new Gson().toJson(listMsg));
      return detail;
   }
   /**
    * 邀请赚到账
    *
    * @param money
    * @param balance
    * @param orderCount
    * @param goodsCount
    * @param uid
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createTeamReceivedMsg(Long uid, BigDecimal money, BigDecimal balance, Date receivedDate,
         String teamName) {
      if (money == null || balance == null || uid == null)
         return null;
      List<CommonMsgItemVO> listMsg = new ArrayList<>();
      List<ClientTextStyleVO> contentList = new ArrayList<>();
      contentList.add(new ClientTextStyleVO(TimeUtil.getYearOnlyYYYY(receivedDate)+ "年", ClientTextStyleVO.COLOR_CONTENT));
      contentList.add(new ClientTextStyleVO(TimeUtil.getMonthOnlyMM(receivedDate), ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList.add(new ClientTextStyleVO("月", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("结算月度", ClientTextStyleVO.COLOR_TITLE), contentList));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账类目", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO(teamName, ClientTextStyleVO.COLOR_CONTENT)));
      List<ClientTextStyleVO> contentList2 = new ArrayList<>();
      contentList2.add(new ClientTextStyleVO("¥" + money.setScale(2, BigDecimal.ROUND_DOWN), ClientTextStyleVO.COLOR_HIGHLIGHT_CONTENT));
      contentList2.add(new ClientTextStyleVO("(账户余额¥ "+ balance.setScale(2, BigDecimal.ROUND_DOWN)+")", ClientTextStyleVO.COLOR_CONTENT));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("到账金额", ClientTextStyleVO.COLOR_TITLE), contentList2));
      listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("备注", ClientTextStyleVO.COLOR_TITLE),
            new ClientTextStyleVO("如有疑问请联系人工客服",   ClientTextStyleVO.COLOR_CONTENT)));
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.invite);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      detail.setExtraInfo(new Gson().toJson(listMsg));
      return detail;
   }
   private static String filterName(String oldname) {
      String name = "";
      if (StringUtil.isNullOrEmpty(oldname))
         return name;
      if (oldname.length() > 2)
         for (int i = 0; i < oldname.length(); i++) {
            if (i == 0)
               name += oldname.charAt(i);
            else
               name += "*";
         }
      else
         name = oldname.charAt(0) + "*";
      return name;
   }
   public static String filterAccount(String alipayAccount) {
      String account = "";
      if (StringUtil.isNullOrEmpty(alipayAccount))
         return account;
      if (alipayAccount.indexOf("@") > -1) {// 邮箱
         int index = alipayAccount.indexOf("@");
         for (int i = 0; i < alipayAccount.length(); i++) {
            if (i < 3 || i >= index)
               account += alipayAccount.charAt(i);
            else
               account += "*";
         }
      } else if (StringUtil.isMobile(alipayAccount)) {// 电话
         account = alipayAccount.substring(0, 7) + "****";
      } else {// 其他
         if (alipayAccount.length() >= 6) {
            for (int i = 0; i < alipayAccount.length(); i++) {
               if (i < alipayAccount.length() - 4)
                  account += alipayAccount.charAt(i);
               else
                  account += "*";
            }
         } else {
            for (int i = 0; i < alipayAccount.length(); i++) {
               if (i <  alipayAccount.length() - 1)
                  account += alipayAccount.charAt(i);
               else
                  account += "*";
            }
         }
      }
      return account;
   }
   /**
    * 红包相关信息
    * @param uid
    * @param type
    * @param content
    * @param beiZhu
    * @return
    */
   public static MsgMoneyDetail createRedPackMsg(Long uid, MsgTypeMoneyTypeEnum type, String content, String beiZhu) {
      if (uid == null || type == null || StringUtil.isNullOrEmpty(content))
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setUser(new UserInfo(uid));
      detail.setRead(false);
      detail.setContent(content);
      detail.setMsgType(type);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      return detail;
   }
   public static MsgMoneyDetail createSystemEqualizeMsg(Long uid, String reason, BigDecimal money, BigDecimal balance,
         String beiZhu) {
      if (money == null || money == null || uid == null)
         return null;
      MsgMoneyDetail detail = new MsgMoneyDetail();
      detail.setBalance(balance);
      detail.setBeiZhu(beiZhu);
      detail.setCreateTime(new Date());
      detail.setMoney(money);
      detail.setMsgType(MsgTypeMoneyTypeEnum.systemEqualize);
      detail.setOrderId(reason);
      detail.setRead(false);
      detail.setUser(new UserInfo(uid));
      return detail;
   }
}