admin
2020-09-24 ca1ad791b7b7b04e57db6bd4fb93f0c1066a9f99
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java
@@ -1,31 +1,12 @@
package com.yeshi.fanli.controller.client.v1;
import java.io.PrintWriter;
import java.math.BigDecimal;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.yeshi.fanli.util.*;
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 org.yeshi.utils.encrypt.DESUtil;
import com.alipay.api.AlipayApiException;
import com.google.gson.Gson;
import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
import com.yeshi.fanli.entity.bus.user.*;
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.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.push.DeviceActive;
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.entity.taobao.ClientTBPid;
@@ -35,1303 +16,1255 @@
import com.yeshi.fanli.exception.user.AlipayAccountException;
import com.yeshi.fanli.exception.user.AlipayTransferException;
import com.yeshi.fanli.exception.user.UserAccountException;
import com.yeshi.fanli.exception.user.UserInfoException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.homemodule.HomeNavbarUserService;
import com.yeshi.fanli.service.inter.money.UserMoneyService;
import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
import com.yeshi.fanli.service.inter.money.extract.ExtractService;
import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.service.inter.push.DeviceActiveService;
import com.yeshi.fanli.service.inter.push.DeviceTokenHWService;
import com.yeshi.fanli.service.inter.push.DeviceTokenOPPOService;
import com.yeshi.fanli.service.inter.push.DeviceTokenVIVOService;
import com.yeshi.fanli.service.inter.push.DeviceTokenXMService;
import com.yeshi.fanli.service.inter.push.*;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.ShamUserService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
import com.yeshi.fanli.service.inter.user.TBPidService;
import com.yeshi.fanli.service.inter.user.UserAccountBindingHistoryService;
import com.yeshi.fanli.service.inter.user.UserAccountService;
import com.yeshi.fanli.service.inter.user.UserInfoDeleteRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.*;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import com.yeshi.fanli.util.wx.MyWXLoginUtil;
import net.sf.json.JSONObject;
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 org.yeshi.utils.encrypt.DESUtil;
import org.yeshi.utils.entity.ProxyIP;
import org.yeshi.utils.entity.wx.WeiXinUser;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.PrintWriter;
import java.math.BigDecimal;
/**
 * 账户系统
 *
 * @author Administrator
 *
 * @author Administrator
 */
@Controller
@RequestMapping("api/v1/user")
public class UserAccountController {
   @Resource
   private UserInfoService userInfoService;
    @Resource
    private UserInfoService userInfoService;
   @Resource
   private OrderService orderService;
   @Resource
   private HongBaoV2Service hongBaoV2Service;
    @Resource
    private HongBaoV2Service hongBaoV2Service;
   @Resource
   private BindingAccountService bindingAccountService;
    @Resource
    private BindingAccountService bindingAccountService;
   @Resource
   private ExtractService extractService;
   @Resource
   private ConfigService configService;
    @Resource
    private ConfigService configService;
   @Resource
   private BusinessSystemService businessSystemService;
    @Resource
    private BusinessSystemService businessSystemService;
   @Resource
   private ShamUserService shamUserService;
   @Resource
   private ThreeSaleSerivce threeSaleSerivce;
    @Resource
    private UserAccountService userAccountService;
   @Resource
   private LostOrderService lostOrderService;
    @Resource
    private RedisManager redisManager;
   @Resource
   private HongBaoManageService hongBaoManageService;
    @Resource
    private TBPidService tbPidService;
   @Resource
   private UserAccountService userAccountService;
    @Resource
    private DeviceTokenHWService deviceTokenHWService;
   @Resource
   private RedisManager redisManager;
    @Resource
    private DeviceTokenOPPOService deviceTokenOPPOService;
   @Resource
   private TBPidService tbPidService;
    @Resource
    private DeviceTokenXMService deviceTokenXMService;
   @Resource
   private DeviceTokenHWService deviceTokenHWService;
    @Resource
    private DeviceTokenVIVOService deviceTokenVIVOService;
   @Resource
   private DeviceTokenOPPOService deviceTokenOPPOService;
    @Resource
    private TaoBaoUnionConfigService taoBaoUnionConfigService;
   @Resource
   private DeviceTokenXMService deviceTokenXMService;
    @Resource
    private SpreadUserImgService spreadUserImgService;
   @Resource
   private DeviceTokenVIVOService deviceTokenVIVOService;
    @Resource
    private UserShareGoodsRecordService userShareGoodsRecordService;
   @Resource
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
    @Resource
    private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
   @Resource
   private SpreadUserImgService spreadUserImgService;
   @Resource
   private UserShareGoodsRecordService userShareGoodsRecordService;
    @Resource
    private UserMoneyService userMoneyService;
   @Resource
   private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
   @Resource
   private UserSystemCouponService userSystemCouponService;
    @Resource
    private HomeNavbarUserService homeNavbarUserService;
   @Resource
   private UserMoneyService userMoneyService;
   @Resource
   private UserAccountBindingHistoryService userAccountBindingHistoryService;
    @Resource
    private UserInfoModifyRecordService userInfoModifyRecordService;
   @Resource
   private HomeNavbarUserService homeNavbarUserService;
    @Resource
    private DeviceActiveService deviceActiveService;
   @Resource
   private UserInfoDeleteRecordService userInfoDeleteRecordService;
    private BusinessSystem getSystem(AcceptData acceptData) {
        BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
                acceptData.getPackages(), acceptData.getSystem());
        return system;
    }
   @Resource
   private UserTaoLiJinOriginService userTaoLiJinOriginService;
    /**
     * @param acceptData
     * @param code
     * @param vcode
     * @param phone
     * @param wxinstall
     * @param tbOpenid
     * @param tbNickName
     * @param tbPortrait
     * @param tbSession(淘宝session数据,加密)
     * @param out
     */
    @RequestMapping(value = "login")
    public void login(AcceptData acceptData, String code, String vcode, String phone, boolean wxinstall,
                      String tbOpenid, String tbNickName, String tbPortrait, String tbSession, int loginType, Boolean first,
                      HttpSession session, HttpServletRequest request, PrintWriter out) {
   @Resource
   private UserInfoModifyRecordService userInfoModifyRecordService;
        // 2.0以下版本不允许登录
        if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
            out.print("请升级到最新版本");
            return;
        }
   @Resource
   private DeviceActiveService deviceActiveService;
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
   /**
    *
    * @param acceptData
    * @param code
    * @param vcode
    * @param phone
    * @param wxinstall
    * @param tbOpenid
    * @param tbNickName
    * @param tbPortrait
    * @param tbSession(淘宝session数据,加密)
    * @param out
    */
   @RequestMapping(value = "login")
   public void login(AcceptData acceptData, String code, String vcode, String phone, boolean wxinstall,
         String tbOpenid, String tbNickName, String tbPortrait, String tbSession, int loginType, Boolean first,
         HttpSession session, HttpServletRequest request, PrintWriter out) {
        if (loginType == 3 && !Constant.IS_TEST)// 验证短信验证码
        {
            // 苹果应用商店上线测试号码
            if ("17316780233".equalsIgnoreCase(phone) && "258168".equalsIgnoreCase(vcode)) {
                ;
            } else {
                String oldVcode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN);
                if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
                    out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
                    return;
                }
            }
      // 2.0以下版本不允许登录
      if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
         out.print("请升级到最新版本");
         return;
      }
            redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
        }
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        UserInfo tbUserInfo = new UserInfo();
        if (!StringUtil.isNullOrEmpty(tbSession)) {
            try {
                tbSession = DESUtil.decode(tbSession.replace("\n", ""), StringUtil.getBase64String("YeShiFANLI889*+"),
                        StringUtil.getBase64String("*M#34f?,"));
            } catch (Exception e) {
                e.printStackTrace();
            }
            JSONObject tbs = JSONObject.fromObject(tbSession);
            tbOpenid = tbs.optString("openId");
            tbNickName = tbs.optString("nick");
            tbPortrait = tbs.optString("avatarUrl");
            // 淘宝ID
            tbUserInfo.setTaoBaoUid(tbs.optString("taobao_user_id"));
        }
      if (loginType == 3 && !Constant.IS_TEST)// 验证短信验证码
      {
         // 苹果应用商店上线测试号码
         if ("17316780233".equalsIgnoreCase(phone) && "258168".equalsIgnoreCase(vcode)) {
            ;
         } else {
            String oldVcode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN);
            if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
               out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
               return;
            }
         }
        tbUserInfo.setOpenid(tbOpenid);
        tbUserInfo.setTbName(tbNickName);
        tbUserInfo.setTbPic(tbPortrait);
         redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
      }
        try {
            LoginResult result = userAccountService.login(request, acceptData, first, system.getAppid(), code, phone,
                    tbUserInfo, wxinstall, loginType);
            if (result == null)
                LogHelper.error("login-result为空值");
      UserInfo tbUserInfo = new UserInfo();
      if (!StringUtil.isNullOrEmpty(tbSession)) {
         try {
            tbSession = DESUtil.decode(tbSession.replace("\n", ""), StringUtil.getBase64String("YeShiFANLI889*+"),
                  StringUtil.getBase64String("*M#34f?,"));
         } catch (Exception e) {
            e.printStackTrace();
         }
         JSONObject tbs = JSONObject.fromObject(tbSession);
         tbOpenid = tbs.optString("openId");
         tbNickName = tbs.optString("nick");
         tbPortrait = tbs.optString("avatarUrl");
         // 淘宝ID
         tbUserInfo.setTaoBaoUid(tbs.optString("taobao_user_id"));
      }
            // if (result.getUser() != null)
            // userAccountService.clearUserPortrait(result.getUser().getId());
      tbUserInfo.setOpenid(tbOpenid);
      tbUserInfo.setTbName(tbNickName);
      tbUserInfo.setTbPic(tbPortrait);
            JSONObject data = new JSONObject();
            data.put("user", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getUser())));
            if (result.getType() == LoginResult.TYPE_CONNECT) {
                data.put("mainUser", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getMainUser())));
                data.put("lessUser", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getLessUser())));
            }
            JSONObject root = new JSONObject();
            root.put("type", result.getType());
            root.put("data", data);
            out.print(JsonUtil.loadTrueResult(root));
      try {
         LoginResult result = userAccountService.login(request, acceptData, first, system.getAppid(), code, phone,
               tbUserInfo, wxinstall, loginType);
         if (result == null)
            LogHelper.error("login-result为空值");
            final UserInfo uuser = result.getUser();
            ThreadUtil.run(new Runnable() {
                public void run() {
                    try {
                        // 绑定oppo,vivo推送
                        DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
                        if (active != null) {
                            deviceTokenOPPOService.bindUid(uuser.getId(), active.getId());
                            deviceTokenVIVOService.bindUid(uuser.getId(), active.getId());
                            deviceTokenXMService.bindUid(active.getId(), uuser.getId());
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
         // if (result.getUser() != null)
         // userAccountService.clearUserPortrait(result.getUser().getId());
        } catch (UserAccountException e) {
            try {
                LogHelper.error("登录出错:" + e.getCode() + "-" + e.getMessage());
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
        }
         JSONObject data = new JSONObject();
         data.put("user", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getUser())));
         if (result.getType() == LoginResult.TYPE_CONNECT) {
            data.put("mainUser", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getMainUser())));
            data.put("lessUser", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getLessUser())));
         }
         JSONObject root = new JSONObject();
         root.put("type", result.getType());
         root.put("data", data);
         out.print(JsonUtil.loadTrueResult(root));
    }
         final UserInfo uuser = result.getUser();
         ThreadUtil.run(new Runnable() {
            public void run() {
               try {
                  // 绑定oppo,vivo推送
                  DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
                  if (active != null) {
                     deviceTokenOPPOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenVIVOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenXMService.bindUid(active.getId(), uuser.getId());
                  }
               } catch (Exception e) {
                  e.printStackTrace();
               }
            }
         });
    /**
     * 账号注册
     *
     * @param acceptData
     * @param tbOpenid
     * @param tbNickName
     * @param tbPortrait
     * @param vcode
     * @param phone
     * @param session
     * @param out
     */
    @RequestMapping(value = "register")
    public void register(AcceptData acceptData, String tbOpenid, String tbNickName, String tbPortrait, String vcode,
                         String phone, HttpServletRequest request, HttpSession session, PrintWriter out) {
        // 2.0以下版本不允许登录
        if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
            out.print("请升级到最新版本");
            return;
        }
      } catch (UserAccountException e) {
         try {
            LogHelper.error("登录出错:" + e.getCode() + "-" + e.getMessage());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
   }
        if (!StringUtil.isNullOrEmpty(phone))// 验证短信验证码
        {
            String oldVcode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN);
            if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
                out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
                return;
            }
   /**
    * 账号注册
    *
    * @param acceptData
    * @param tbOpenid
    * @param tbNickName
    * @param tbPortrait
    * @param vcode
    * @param phone
    * @param session
    * @param out
    */
   @RequestMapping(value = "register")
   public void register(AcceptData acceptData, String tbOpenid, String tbNickName, String tbPortrait, String vcode,
         String phone, HttpServletRequest request, HttpSession session, PrintWriter out) {
      // 2.0以下版本不允许登录
      if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
         out.print("请升级到最新版本");
         return;
      }
            redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
        }
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        if (StringUtil.isNullOrEmpty(phone) && StringUtil.isNullOrEmpty(tbOpenid)) {
            out.print(JsonUtil.loadFalseResult(5, "请上传注册信息"));
            return;
        }
      if (!StringUtil.isNullOrEmpty(phone))// 验证短信验证码
      {
         String oldVcode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN);
         if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
            out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
            return;
         }
        UserInfo user = new UserInfo();
        user.setOpenid(tbOpenid);
        user.setTbName(tbNickName);
        user.setTbPic(tbPortrait);
         redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
      }
        user.setNickName(tbNickName);
        user.setPortrait(tbPortrait);
      if (StringUtil.isNullOrEmpty(phone) && StringUtil.isNullOrEmpty(tbOpenid)) {
         out.print(JsonUtil.loadFalseResult(5, "请上传注册信息"));
         return;
      }
        user.setPhone(phone);
        user.setAppId(system.getAppid());
        user.setLastLoginIp(request.getRemoteHost());
        user.setLastLoginTime(java.lang.System.currentTimeMillis());
        if (!StringUtil.isNullOrEmpty(phone))
            user.setLoginType(3);
        else
            user.setLoginType(1);
        try {
            userAccountService.register(user);
            user = userInfoService.getUserByIdWithMybatis(user.getId());
            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()));
        }
    }
      UserInfo user = new UserInfo();
      user.setOpenid(tbOpenid);
      user.setTbName(tbNickName);
      user.setTbPic(tbPortrait);
    /**
     * 获取用户ID
     *
     * @param acceptData
     * @param code
     * @param tbOpenid
     * @param phone
     * @param out
     */
    @RequestMapping(value = "getuid")
    public void getUid(AcceptData acceptData, String code, String tbOpenid, String phone, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
        UserInfo user = null;
        if (!StringUtil.isNullOrEmpty(code)) {
            WXAccountInfoDTO accountInfo = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
      user.setNickName(tbNickName);
      user.setPortrait(tbPortrait);
            WeiXinUser weiXinUser = MyWXLoginUtil.getWeiXinUserWithSavePortrait(code, accountInfo.getAppId(),
                    accountInfo.getAppSecret());
            if (weiXinUser == null) {
                out.print(JsonUtil.loadFalseResult(1, "获取微信用户信息失败"));
                return;
            }
            try {
                user = userAccountService.getUserInfoByWXUnionId(SystemInfoUtil.getSystem(acceptData), weiXinUser.getUnionid());
            } catch (UserAccountException e) {
                try {
                    LogHelper.errorDetailInfo(e, null, "获取用户信息出错");
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        } else if (!StringUtil.isNullOrEmpty(tbOpenid)) {
            try {
                user = userAccountService.getUserInfoByTaoBaoOpenId(SystemInfoUtil.getSystem(acceptData), tbOpenid);
            } catch (UserAccountException e) {
                try {
                    LogHelper.errorDetailInfo(e);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        } else if (!StringUtil.isNullOrEmpty(phone)) {
            try {
                user = userAccountService.getUserInfoByPhone(SystemInfoUtil.getSystem(acceptData), phone);
            } catch (UserAccountException e) {
                try {
                    LogHelper.errorDetailInfo(e);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        }
      user.setPhone(phone);
      user.setAppId(system.getAppid());
      user.setLastLoginIp(request.getRemoteHost());
      user.setLastLoginTime(java.lang.System.currentTimeMillis());
      if (!StringUtil.isNullOrEmpty(phone))
         user.setLoginType(3);
      else
         user.setLoginType(1);
      try {
         userAccountService.register(user);
         user = userInfoService.getUserByIdWithMybatis(user.getId());
         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()));
      }
   }
        if (user == null) {
            out.print(JsonUtil.loadFalseResult(2, "用户尚未绑定"));
            return;
        } else {
            JSONObject data = new JSONObject();
            data.put("uid", user.getId());
            out.print(JsonUtil.loadTrueResult(data));
            return;
        }
    }
   /**
    * 获取用户ID
    *
    * @param acceptData
    * @param code
    * @param tbOpenid
    * @param phone
    * @param out
    */
   @RequestMapping(value = "getuid")
   public void getUid(AcceptData acceptData, String code, String tbOpenid, String phone, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
      UserInfo user = null;
      if (!StringUtil.isNullOrEmpty(code)) {
         WXAccountInfoDTO accountInfo = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
    /**
     * 绑定电话号码
     *
     * @param acceptData
     * @param vcode
     * @param phone
     * @param out
     */
    @RequestMapping(value = "bindPhone")
    public void bindPhone(AcceptData acceptData, Long uid, String vcode, String phone, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
         WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, accountInfo.getAppId(),
               accountInfo.getAppSecret());
         if (weiXinUser == null) {
            out.print(JsonUtil.loadFalseResult(1, "获取微信用户信息失败"));
            return;
         }
         try {
            user = userAccountService.getUserInfoByWXUnionId(SystemInfoUtil.getSystem(acceptData), weiXinUser.getUnionid());
         } catch (UserAccountException e) {
            try {
               LogHelper.errorDetailInfo(e, null, "获取用户信息出错");
            } catch (Exception e1) {
               e1.printStackTrace();
            }
         }
      } else if (!StringUtil.isNullOrEmpty(tbOpenid)) {
         try {
            user = userAccountService.getUserInfoByTaoBaoOpenId(SystemInfoUtil.getSystem(acceptData), tbOpenid);
         } catch (UserAccountException e) {
            try {
               LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
               e1.printStackTrace();
            }
         }
      } else if (!StringUtil.isNullOrEmpty(phone)) {
         try {
            user = userAccountService.getUserInfoByPhone(SystemInfoUtil.getSystem(acceptData), phone);
         } catch (UserAccountException e) {
            try {
               LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
               e1.printStackTrace();
            }
         }
      }
        if (StringUtil.isNullOrEmpty(vcode)) {
            out.print(JsonUtil.loadFalseResult(3, "请上传验证码"));
            return;
        }
      if (user == null) {
         out.print(JsonUtil.loadFalseResult(2, "用户尚未绑定"));
         return;
      } else {
         JSONObject data = new JSONObject();
         data.put("uid", user.getId());
         out.print(JsonUtil.loadTrueResult(data));
         return;
      }
   }
        if (StringUtil.isNullOrEmpty(phone)) {
            out.print(JsonUtil.loadFalseResult(3, "请上传电话号码"));
            return;
        }
   /**
    * 绑定电话号码
    *
    * @param acceptData
    * @param vcode
    * @param phone
    * @param out
    */
   @RequestMapping(value = "bindPhone")
   public void bindPhone(AcceptData acceptData, Long uid, String vcode, String phone, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN);
      if (StringUtil.isNullOrEmpty(vcode)) {
         out.print(JsonUtil.loadFalseResult(3, "请上传验证码"));
         return;
      }
        if (Constant.IS_OUTNET) {
            if (!vcode.equalsIgnoreCase(oldVCode)) {
                out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
                return;
            }
            redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
        }
        try {
            userAccountService.bindPhone(uid, phone);
            UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
            // 判断电话号码是否已经封禁
            ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
                    .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
            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;
            }
      if (StringUtil.isNullOrEmpty(phone)) {
         out.print(JsonUtil.loadFalseResult(3, "请上传电话号码"));
         return;
      }
            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()));
        }
      String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN);
    }
      if (Constant.IS_OUTNET) {
         if (!vcode.equalsIgnoreCase(oldVCode)) {
            out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
            return;
         }
         redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
      }
      try {
         userAccountService.bindPhone(uid, phone);
         UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
         // 判断电话号码是否已经封禁
         ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
               .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
         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;
         }
    /**
     * 解绑电话号码
     *
     * @param acceptData
     * @param uid
     * @param phone
     * @param out
     */
    @RequestMapping(value = "unBindPhone")
    public void unBindPhone(AcceptData acceptData, Long uid, String phone, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
         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()));
      }
        if (StringUtil.isNullOrEmpty(phone)) {
            out.print(JsonUtil.loadFalseResult(3, "请上传电话号码"));
            return;
        }
   }
        try {
            userAccountService.unBindPhone(uid, phone);
            out.print(JsonUtil.loadTrueResult("解绑成功"));
        } catch (UserAccountException e) {
            out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
        }
   /**
    * 解绑电话号码
    *
    * @param acceptData
    * @param uid
    * @param phone
    * @param out
    */
   @RequestMapping(value = "unBindPhone")
   public void unBindPhone(AcceptData acceptData, Long uid, String phone, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
    }
      if (StringUtil.isNullOrEmpty(phone)) {
         out.print(JsonUtil.loadFalseResult(3, "请上传电话号码"));
         return;
      }
    /**
     * 绑定淘宝
     *
     * @param acceptData
     * @param uid
     * @param tbOpenid
     * @param tbNickName
     * @param tbPortrait
     * @param tbSession  -淘宝授权session
     * @param out
     */
      try {
         userAccountService.unBindPhone(uid, phone);
         out.print(JsonUtil.loadTrueResult("解绑成功"));
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
    @RequestMapping(value = "bindTaoBao")
    public void bindTaoBao(AcceptData acceptData, Long uid, String tbOpenid, String tbNickName, String tbPortrait,
                           String tbSession, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
   }
        String taoBaoUid = "";
   /**
    * 绑定淘宝
    *
    * @param acceptData
    * @param uid
    * @param tbOpenid
    * @param tbNickName
    * @param tbPortrait
    * @param tbSession
    *            -淘宝授权session
    * @param out
    */
        if (!StringUtil.isNullOrEmpty(tbSession)) {
            try {
                tbSession = DESUtil.decode(tbSession.replace("\n", ""), StringUtil.getBase64String("YeShiFANLI889*+"),
                        StringUtil.getBase64String("*M#34f?,"));
            } catch (Exception e) {
                e.printStackTrace();
            }
            JSONObject session = JSONObject.fromObject(tbSession);
            tbOpenid = session.optString("openId");
            tbNickName = session.optString("nick");
            tbPortrait = session.optString("avatarUrl");
            taoBaoUid = session.optString("taobao_user_id");
        }
   @RequestMapping(value = "bindTaoBao")
   public void bindTaoBao(AcceptData acceptData, Long uid, String tbOpenid, String tbNickName, String tbPortrait,
         String tbSession, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        try {
            userAccountService.bindTaoBao(uid, tbOpenid, tbNickName, tbPortrait);
            UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
      String taoBaoUid = "";
            // 判断taoBaoUid是否已经封禁
            if (!StringUtil.isNullOrEmpty(taoBaoUid)) {
                ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
                        .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, taoBaoUid);
                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;
                }
            }
      if (!StringUtil.isNullOrEmpty(tbSession)) {
         try {
            tbSession = DESUtil.decode(tbSession.replace("\n", ""), StringUtil.getBase64String("YeShiFANLI889*+"),
                  StringUtil.getBase64String("*M#34f?,"));
         } catch (Exception e) {
            e.printStackTrace();
         }
         JSONObject session = JSONObject.fromObject(tbSession);
         tbOpenid = session.optString("openId");
         tbNickName = session.optString("nick");
         tbPortrait = session.optString("avatarUrl");
         taoBaoUid = session.optString("taobao_user_id");
      }
            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()));
        }
    }
      try {
         userAccountService.bindTaoBao(uid, tbOpenid, tbNickName, tbPortrait);
         UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
    /**
     * 解绑淘宝
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "unBindTaoBao")
    public void unBindTaoBao(AcceptData acceptData, Long uid, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
         // 判断taoBaoUid是否已经封禁
         if (!StringUtil.isNullOrEmpty(taoBaoUid)) {
            ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
                  .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, taoBaoUid);
            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;
            }
         }
        try {
            userAccountService.unBindTaoBao(uid);
            out.print(JsonUtil.loadTrueResult("解绑成功"));
        } catch (UserAccountException e) {
            out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
        }
    }
         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()));
      }
   }
    /**
     * 更改微信
     *
     * @param acceptData
     * @param uid
     * @param code
     * @param out
     */
    @RequestMapping(value = "changeWX")
    public void changeWX(AcceptData acceptData, Long uid, String code, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
   /**
    * 解绑淘宝
    *
    * @param acceptData
    * @param uid
    * @param out
    */
   @RequestMapping(value = "unBindTaoBao")
   public void unBindTaoBao(AcceptData acceptData, Long uid, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        if (StringUtil.isNullOrEmpty(code)) {
            out.print(JsonUtil.loadFalseResult(3, "请上传code"));
            return;
        }
      try {
         userAccountService.unBindTaoBao(uid);
         out.print(JsonUtil.loadTrueResult("解绑成功"));
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
   }
        try {
            userAccountService.changeWXBind(acceptData, uid, code);
            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;
            }
   /**
    * 更改微信
    *
    * @param acceptData
    * @param uid
    * @param code
    * @param out
    */
   @RequestMapping(value = "changeWX")
   public void changeWX(AcceptData acceptData, Long uid, String code, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
            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()));
        }
    }
      if (StringUtil.isNullOrEmpty(code)) {
         out.print(JsonUtil.loadFalseResult(3, "请上传code"));
         return;
      }
    /**
     * 获取电话号码
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "getphone")
    public void getPhone(AcceptData acceptData, Long uid, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
      try {
         userAccountService.changeWXBind(acceptData, uid, code);
         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;
         }
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
            return;
        }
         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()));
      }
   }
        UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
        user = UserUtil.filterForClientUser(user);
        JSONObject data = new JSONObject();
        data.put("phone", user.getPhone());
        out.print(JsonUtil.loadTrueResult(data));
    }
   /**
    * 获取电话号码
    *
    * @param acceptData
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getphone")
   public void getPhone(AcceptData acceptData, Long uid, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
    @RequestMapping(value = "verifyvcodeforbind")
    public void verifyVcodeForbind(AcceptData acceptData, Long uid, String vcode, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
         return;
      }
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
            return;
        }
      UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
      user = UserUtil.filterForClientUser(user);
      JSONObject data = new JSONObject();
      data.put("phone", user.getPhone());
      out.print(JsonUtil.loadTrueResult(data));
   }
        if (StringUtil.isNullOrEmpty(vcode)) {
            out.print(JsonUtil.loadFalseResult(1, "请上传验证码"));
            return;
        }
   @RequestMapping(value = "verifyvcodeforbind")
   public void verifyVcodeForbind(AcceptData acceptData, Long uid, String vcode, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        UserInfo user = userInfoService.getUserById(uid);
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
         return;
      }
        if (StringUtil.isNullOrEmpty(user.getPhone())) {
            out.print(JsonUtil.loadFalseResult(1, "没有绑定电话号码"));
            return;
        }
        if (!Constant.IS_TEST) {
            String code = redisManager.getSMSVCode(user.getPhone(), SMSHistory.TYPE_LOGIN);
            if (code == null || !code.equalsIgnoreCase(vcode)) {
                out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
                return;
            }
        }
        redisManager.clearSMSFrequencyLimit(user.getPhone(), SMSHistory.TYPE_LOGIN);
        redisManager.saveBindAlipayAccountSMSState(user.getPhone());
        out.print(JsonUtil.loadTrueResult(""));
    }
      if (StringUtil.isNullOrEmpty(vcode)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传验证码"));
         return;
      }
    /**
     * 支付宝绑定
     *
     * @param acceptData
     * @param uid-用户ID
     * @param name-支付宝实名名称
     * @param account      -支付宝账号
     * @param out
     */
    @RequestMapping(value = "bindalipay")
    public void bindAlipay(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
      UserInfo user = userInfoService.getUserById(uid);
      if (StringUtil.isNullOrEmpty(user.getPhone())) {
         out.print(JsonUtil.loadFalseResult(1, "没有绑定电话号码"));
         return;
      }
      String code = redisManager.getSMSVCode(user.getPhone(), SMSHistory.TYPE_LOGIN);
      if (code == null || !code.equalsIgnoreCase(vcode)) {
         out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
         return;
      }
      redisManager.clearSMSFrequencyLimit(user.getPhone(), SMSHistory.TYPE_LOGIN);
      redisManager.saveBindAlipayAccountSMSState(user.getPhone());
      out.print(JsonUtil.loadTrueResult(""));
   }
   /**
    * 支付宝绑定
    *
    * @param acceptData
    * @param uid-用户ID
    * @param name-支付宝实名名称
    * @param account
    *            -支付宝账号
    * @param out
    */
   @RequestMapping(value = "bindalipay")
   public void bindAlipay(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
            return;
        }
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
         return;
      }
        if (StringUtil.isNullOrEmpty(name)) {
            out.print(JsonUtil.loadFalseResult(1, "请上传支付宝实名名称"));
            return;
        }
      if (StringUtil.isNullOrEmpty(name)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传支付宝实名名称"));
         return;
      }
        if (StringUtil.isNullOrEmpty(account)) {
            out.print(JsonUtil.loadFalseResult(1, "请上传支付宝账号"));
            return;
        }
      if (StringUtil.isNullOrEmpty(account)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传支付宝账号"));
         return;
      }
        UserInfo user = userInfoService.getUserById(uid);
      UserInfo user = userInfoService.getUserById(uid);
        boolean bind = redisManager.isBindAlipayAccountSMSStateValid(user.getPhone());
        if (!bind) {
            out.print(JsonUtil.loadFalseResult(90002, "手机验证超时"));
            return;
        }
      boolean bind = redisManager.isBindAlipayAccountSMSStateValid(user.getPhone());
      if (!bind) {
         out.print(JsonUtil.loadFalseResult(90002, "手机验证超时"));
         return;
      }
        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
        if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
            out.print(JsonUtil.loadFalseResult(2, "服务器繁忙,请稍后重试"));
            return;
        }
        redisManager.cacheCommonString(key, "1", 120);
        // 更换绑定
        try {
            BindingAccount bindingAccount = bindingAccountService.changeAlipayBinding(uid, name, account);
            out.print(JsonUtil.loadTrueResult(JsonUtil.getGson().toJson(bindingAccount)));
        } catch (Exception e) {
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            out.print(JsonUtil.loadFalseResult(3, "服务器内部错误"));
        } finally {
            redisManager.removeCommonString(key);
        }
    }
      String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
      if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
         out.print(JsonUtil.loadFalseResult(2, "服务器繁忙,请稍后重试"));
         return;
      }
      redisManager.cacheCommonString(key, "1", 120);
      // 更换绑定
      try {
         BindingAccount bindingAccount = bindingAccountService.changeAlipayBinding(uid, name, account);
         out.print(JsonUtil.loadTrueResult(JsonUtil.getGson().toJson(bindingAccount)));
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         out.print(JsonUtil.loadFalseResult(3, "服务器内部错误"));
      } finally {
         redisManager.removeCommonString(key);
      }
   }
    @RequestMapping(value = "bindalipaywithverify")
    public void bindAlipayWithVerify(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
   @RequestMapping(value = "bindalipaywithverify")
   public void bindAlipayWithVerify(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
            return;
        }
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
         return;
      }
        if (StringUtil.isNullOrEmpty(name)) {
            out.print(JsonUtil.loadFalseResult(1, "请上传支付宝实名名称"));
            return;
        }
      if (StringUtil.isNullOrEmpty(name)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传支付宝实名名称"));
         return;
      }
        if (StringUtil.isNullOrEmpty(account)) {
            out.print(JsonUtil.loadFalseResult(1, "请上传支付宝账号"));
            return;
        }
      if (StringUtil.isNullOrEmpty(account)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传支付宝账号"));
         return;
      }
        UserInfo user = userInfoService.getUserById(uid);
      UserInfo user = userInfoService.getUserById(uid);
        boolean bind = redisManager.isBindAlipayAccountSMSStateValid(user.getPhone());
        if (!bind) {
            out.print(JsonUtil.loadFalseResult(90002, "手机验证超时"));
            return;
        }
      boolean bind = redisManager.isBindAlipayAccountSMSStateValid(user.getPhone());
      if (!bind) {
         out.print(JsonUtil.loadFalseResult(90002, "手机验证超时"));
         return;
      }
        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
        if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
            out.print(JsonUtil.loadFalseResult(1001, "服务器繁忙,请稍后重试"));
            return;
        }
        redisManager.cacheCommonString(key, "1", 120);
        // 可以展示给用户看的错误码
        String[] ALIPAY_CODES = new String[]{"SYSTEM_ERROR", "PERMIT_CHECK_PERM_LIMITED", "PERM_AML_NOT_REALNAME_REV",
                "PERM_AML_NOT_REALNAME_REV", "PAYEE_USER_INFO_ERROR", "PAYEE_ACC_OCUPIED",
                "PERMIT_CHECK_PERM_IDENTITY_THEFT", "PERMIT_NON_BANK_LIMIT_PAYEE", "EXCEED_LIMIT_UNRN_DM_AMOUNT"};
        try {
            BindingAccount bindingAccount = bindingAccountService.changeAlipayBindingWithVerify(uid, name, account);
            out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount), "您的支付宝账号通过验证,可以正常提现"));
        } catch (AlipayTransferException e1) {
            if (e1.getSubCode().equalsIgnoreCase("PAYEE_NOT_EXIST")) {
                String msg = "无法搜索到该账号\n①请检查一下支付宝帐号和姓名是否填写正确。\n ②请在支付宝隐私设置中检查是否已开启“通过邮箱/手机号/会员名找到我”选项。";
                out.print(JsonUtil.loadFalseResult(1, msg));
            } else {
                for (String st : ALIPAY_CODES) {
                    if (st.equalsIgnoreCase(e1.getSubCode())) {
                        out.print(JsonUtil.loadFalseResult(2, e1.getMsg()));
                        return;
                    }
                }
                out.print(JsonUtil.loadFalseResult(3, "支付宝接口出错,验证失败,请联系客服。"));
                return;
            }
      String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
      if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
         out.print(JsonUtil.loadFalseResult(1001, "服务器繁忙,请稍后重试"));
         return;
      }
      redisManager.cacheCommonString(key, "1", 120);
      // 可以展示给用户看的错误码
      String[] ALIPAY_CODES = new String[] { "SYSTEM_ERROR", "PERMIT_CHECK_PERM_LIMITED", "PERM_AML_NOT_REALNAME_REV",
            "PERM_AML_NOT_REALNAME_REV", "PAYEE_USER_INFO_ERROR", "PAYEE_ACC_OCUPIED",
            "PERMIT_CHECK_PERM_IDENTITY_THEFT", "PERMIT_NON_BANK_LIMIT_PAYEE", "EXCEED_LIMIT_UNRN_DM_AMOUNT" };
      try {
         BindingAccount bindingAccount = bindingAccountService.changeAlipayBindingWithVerify(uid, name, account);
         out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount), "您的支付宝账号通过验证,可以正常提现"));
      } catch (AlipayTransferException e1) {
         if (e1.getSubCode().equalsIgnoreCase("PAYEE_NOT_EXIST")) {
            String msg = "无法搜索到该账号\n①请检查一下支付宝帐号和姓名是否填写正确。\n ②请在支付宝隐私设置中检查是否已开启“通过邮箱/手机号/会员名找到我”选项。";
            out.print(JsonUtil.loadFalseResult(1, msg));
         } else {
            for (String st : ALIPAY_CODES) {
               if (st.equalsIgnoreCase(e1.getSubCode())) {
                  out.print(JsonUtil.loadFalseResult(2, e1.getMsg()));
                  return;
               }
            }
            out.print(JsonUtil.loadFalseResult(3, "支付宝接口出错,验证失败,请联系客服。"));
            return;
         }
        } catch (AlipayApiException e2) {
            out.print(JsonUtil.loadFalseResult(4, e2.getErrMsg()));
            return;
        } catch (AlipayAccountException e3) {
            // 账户无余额
            if (e3.getCode() == AlipayAccountException.CODE_NO_MONEY) {
                out.print(JsonUtil.loadFalseResult(5, e3.getMsg()));
                return;
                // 提现次数限制
            } else if (e3.getCode() == AlipayAccountException.CODE_TIMES_LIMIT) {
                out.print(JsonUtil.loadFalseResult(6, e3.getMsg()));
                return;
            } else {
                out.print(JsonUtil.loadFalseResult(7, e3.getMsg()));
                return;
            }
      } catch (AlipayApiException e2) {
         out.print(JsonUtil.loadFalseResult(4, e2.getErrMsg()));
         return;
      } catch (AlipayAccountException e3) {
         // 账户无余额
         if (e3.getCode() == AlipayAccountException.CODE_NO_MONEY) {
            out.print(JsonUtil.loadFalseResult(5, e3.getMsg()));
            return;
            // 提现次数限制
         } else if (e3.getCode() == AlipayAccountException.CODE_TIMES_LIMIT) {
            out.print(JsonUtil.loadFalseResult(6, e3.getMsg()));
            return;
         } else {
            out.print(JsonUtil.loadFalseResult(7, e3.getMsg()));
            return;
         }
        } catch (Exception e) {
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            out.print(JsonUtil.loadFalseResult(8, "服务器内部错误,验证失败,请联系客服。"));
        } finally {
            redisManager.removeCommonString(key);
        }
    }
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         out.print(JsonUtil.loadFalseResult(8, "服务器内部错误,验证失败,请联系客服。"));
      } finally {
         redisManager.removeCommonString(key);
      }
   }
    @RequestMapping(value = "bindalipaywithverifynew")
    public void bindAlipayWithVerifyNew(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
   @RequestMapping(value = "bindalipaywithverifynew")
   public void bindAlipayWithVerifyNew(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
            return;
        }
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
         return;
      }
        if (StringUtil.isNullOrEmpty(name)) {
            out.print(JsonUtil.loadFalseResult(1, "请上传支付宝实名名称"));
            return;
        }
      if (StringUtil.isNullOrEmpty(name)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传支付宝实名名称"));
         return;
      }
        if (StringUtil.isNullOrEmpty(account)) {
            out.print(JsonUtil.loadFalseResult(1, "请上传支付宝账号"));
            return;
        }
      if (StringUtil.isNullOrEmpty(account)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传支付宝账号"));
         return;
      }
        UserInfo user = userInfoService.getUserById(uid);
      UserInfo user = userInfoService.getUserById(uid);
        boolean bind = redisManager.isBindAlipayAccountSMSStateValid(user.getPhone());
        if (!bind) {
            out.print(JsonUtil.loadFalseResult(90002, "手机验证超时"));
            return;
        }
      boolean bind = redisManager.isBindAlipayAccountSMSStateValid(user.getPhone());
      if (!bind) {
         out.print(JsonUtil.loadFalseResult(90002, "手机验证超时"));
         return;
      }
        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
        if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
            out.print(JsonUtil.loadFalseResult(1001, "服务器繁忙,请稍后重试"));
            return;
        }
        redisManager.cacheCommonString(key, "1", 120);
      String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
      if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
         out.print(JsonUtil.loadFalseResult(1001, "服务器繁忙,请稍后重试"));
         return;
      }
      redisManager.cacheCommonString(key, "1", 120);
        // 支付宝绑定
        ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
                .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.alipayAccount, account);
        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;
        }
      // 支付宝绑定
      ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
            .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.alipayAccount, account);
      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;
      }
        // 可以展示给用户看的错误码
        String[] ALIPAY_CODES = new String[]{"SYSTEM_ERROR", "PERMIT_CHECK_PERM_LIMITED", "PERM_AML_NOT_REALNAME_REV",
                "PERM_AML_NOT_REALNAME_REV", "PAYEE_USER_INFO_ERROR", "PAYEE_ACC_OCUPIED",
                "PERMIT_CHECK_PERM_IDENTITY_THEFT", "PERMIT_NON_BANK_LIMIT_PAYEE", "EXCEED_LIMIT_UNRN_DM_AMOUNT"};
        BindingAccount oldBindingAccount = bindingAccountService.getBindingAccountByUidAndType(uid,
                BindingAccount.TYPE_ALIPAY);
        try {
            BigDecimal balance = user.getMyHongBao();
            BindingAccount bindingAccount = bindingAccountService.changeAlipayBindingWithVerify(uid, name, account);
            // 余额充足
            if (balance.compareTo(new BigDecimal("0.1")) >= 0)
                out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount),
                        "系统已成功转账0.1元到提现账号中,提现账号验证通过,恭喜你!可以提现了。"));
            else
                out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount),
                        "系统已成功转账0.1元到提现账号中,提现账号验证通过,恭喜你!可以提现了。注:此0.1元将会在后续产生的余额中合理扣除,敬请知晓。"));
      // 可以展示给用户看的错误码
      String[] ALIPAY_CODES = new String[] { "SYSTEM_ERROR", "PERMIT_CHECK_PERM_LIMITED", "PERM_AML_NOT_REALNAME_REV",
            "PERM_AML_NOT_REALNAME_REV", "PAYEE_USER_INFO_ERROR", "PAYEE_ACC_OCUPIED",
            "PERMIT_CHECK_PERM_IDENTITY_THEFT", "PERMIT_NON_BANK_LIMIT_PAYEE", "EXCEED_LIMIT_UNRN_DM_AMOUNT" };
      BindingAccount oldBindingAccount = bindingAccountService.getBindingAccountByUidAndType(uid,
            BindingAccount.TYPE_ALIPAY);
      try {
         BigDecimal balance = user.getMyHongBao();
         BindingAccount bindingAccount = bindingAccountService.changeAlipayBindingWithVerify(uid, name, account);
         // 余额充足
         if (balance.compareTo(new BigDecimal("0.1")) >= 0)
            out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount),
                  "系统已成功转账0.1元到提现账号中,提现账号验证通过,恭喜你!可以提现了。"));
         else
            out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount),
                  "系统已成功转账0.1元到提现账号中,提现账号验证通过,恭喜你!可以提现了。注:此0.1元将会在后续产生的余额中合理扣除,敬请知晓。"));
            userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindAlipay, account);
        } catch (AlipayTransferException e1) {
            LogHelper.error("支付宝验证出错:" + new Gson().toJson(e1));
            if (e1.getSubCode().equalsIgnoreCase("PAYEE_NOT_EXIST")) {
                String msg = "系统未能成功转账0.1元,提现账号信息有误,请核对后重新填写。";
                out.print(JsonUtil.loadFalseResult(1, msg));
            } else {
                for (String st : ALIPAY_CODES) {
                    if (st.equalsIgnoreCase(e1.getSubCode())) {
                        out.print(JsonUtil.loadFalseResult(2, e1.getMsg()));
                        return;
                    }
                }
                out.print(JsonUtil.loadFalseResult(3, "支付宝接口出错,验证失败,请联系客服。"));
                return;
            }
         userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindAlipay, account);
      } catch (AlipayTransferException e1) {
         LogHelper.error("支付宝验证出错:"+new Gson().toJson(e1));
         if (e1.getSubCode().equalsIgnoreCase("PAYEE_NOT_EXIST")) {
            String msg = "系统未能成功转账0.1元,提现账号信息有误,请核对后重新填写。";
            out.print(JsonUtil.loadFalseResult(1, msg));
         } else {
            for (String st : ALIPAY_CODES) {
               if (st.equalsIgnoreCase(e1.getSubCode())) {
                  out.print(JsonUtil.loadFalseResult(2, e1.getMsg()));
                  return;
               }
            }
            out.print(JsonUtil.loadFalseResult(3, "支付宝接口出错,验证失败,请联系客服。"));
            return;
         }
        } catch (AlipayApiException e2) {
            out.print(JsonUtil.loadFalseResult(4, e2.getErrMsg()));
            return;
        } catch (AlipayAccountException e3) {
            // 账户无余额
            if (e3.getCode() == AlipayAccountException.CODE_NO_MONEY) {
                if (oldBindingAccount != null) {
                    out.print(JsonUtil.loadFalseResult(5, "当前账户没有余额,无需修改,请有余额后修改"));
                } else {
                    out.print(JsonUtil.loadFalseResult(5, "当前账户没有余额,请有余额后绑定"));
                }
                return;
                // 提现次数限制
            } else if (e3.getCode() == AlipayAccountException.CODE_TIMES_LIMIT) {
                out.print(JsonUtil.loadFalseResult(6, "每月仅可修改1次提现账号,请下月再试吧。"));
                return;
            } else {
                out.print(JsonUtil.loadFalseResult(7, e3.getMsg()));
                return;
            }
      } catch (AlipayApiException e2) {
         out.print(JsonUtil.loadFalseResult(4, e2.getErrMsg()));
         return;
      } catch (AlipayAccountException e3) {
         // 账户无余额
         if (e3.getCode() == AlipayAccountException.CODE_NO_MONEY) {
            if (oldBindingAccount != null) {
               out.print(JsonUtil.loadFalseResult(5, "当前账户没有余额,无需修改,请有余额后修改"));
            } else {
               out.print(JsonUtil.loadFalseResult(5, "当前账户没有余额,请有余额后绑定"));
            }
            return;
            // 提现次数限制
         } else if (e3.getCode() == AlipayAccountException.CODE_TIMES_LIMIT) {
            out.print(JsonUtil.loadFalseResult(6, "每月仅可修改1次提现账号,请下月再试吧。"));
            return;
         } else {
            out.print(JsonUtil.loadFalseResult(7, e3.getMsg()));
            return;
         }
        } catch (Exception e) {
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            out.print(JsonUtil.loadFalseResult(8, "服务器内部错误,验证失败,请联系客服。"));
        } finally {
            redisManager.removeCommonString(key);
        }
    }
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         out.print(JsonUtil.loadFalseResult(8, "服务器内部错误,验证失败,请联系客服。"));
      } finally {
         redisManager.removeCommonString(key);
      }
   }
    /**
     * 获取用户资金详情
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "getusermoney")
    public void getMoneyDetail(AcceptData acceptData, Long uid, PrintWriter out) {
   /**
    * 获取用户资金详情
    *
    * @param acceptData
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getusermoney")
   public void getMoneyDetail(AcceptData acceptData, Long uid, PrintWriter out) {
        UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
        if (user == null) {
            out.print(JsonUtil.loadFalseResult(2, "用户不存在"));
            return;
        }
        BigDecimal moneyToday = userMoneyService.getMoneyToday(uid);
        if (moneyToday == null) {
            moneyToday = new BigDecimal(0);
        }
        BigDecimal moneyMonth = userMoneyService.getMoneyMonth(uid);
        if (moneyMonth == null) {
            moneyMonth = new BigDecimal(0);
        }
      UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
      if (user == null) {
         out.print(JsonUtil.loadFalseResult(2, "用户不存在"));
         return;
      }
      BigDecimal moneyToday = userMoneyService.getMoneyToday(uid);
      if (moneyToday == null) {
         moneyToday = new BigDecimal(0);
      }
      BigDecimal moneyMonth = userMoneyService.getMoneyMonth(uid);
      if (moneyMonth == null) {
         moneyMonth = new BigDecimal(0);
      }
        BigDecimal moneyLastMonth = userMoneyService.getMoneyLastMonth(uid);
        BigDecimal unOpenmoney = hongBaoV2Service.getUnRecievedFanLiMoney(uid);
        BigDecimal totalFanMoney = hongBaoV2Service.getTotalFanLiMoney(uid);
        JSONObject data = new JSONObject();
        int spreadImgCount = spreadUserImgService.countUserSpreadImg(uid);
        long shareCount = userShareGoodsRecordService.countShareRecordByUid(uid);
      BigDecimal moneyLastMonth = userMoneyService.getMoneyLastMonth(uid);
      BigDecimal unOpenmoney = hongBaoV2Service.getUnRecievedFanLiMoney(uid);
      BigDecimal totalFanMoney = hongBaoV2Service.getTotalFanLiMoney(uid);
      JSONObject data = new JSONObject();
      int spreadImgCount = spreadUserImgService.countUserSpreadImg(uid);
      long shareCount = userShareGoodsRecordService.countShareRecordByUid(uid);
        // IOS端数字按照字符串处理
        if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && Integer.parseInt(acceptData.getVersion()) > 33) {
            data.put("moneyToday", moneyToday.setScale(2, BigDecimal.ROUND_DOWN).toString());
            data.put("moneyMonth", moneyMonth.setScale(2, BigDecimal.ROUND_DOWN).toString());
            data.put("moneyLastMonth", moneyLastMonth.setScale(2, BigDecimal.ROUND_DOWN).toString());
            data.put("money", user.getMyHongBao().setScale(2, BigDecimal.ROUND_DOWN).toString());
            data.put("unGetMoney", unOpenmoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
            data.put("totalFanLiMoney", totalFanMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());// 累计返利
            data.put("totalTiChengMoney",
                    hongBaoV2Service.getTotalTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN).toString());// 累计提成
            data.put("totalUnGetTiChengMoney",
                    hongBaoV2Service.getUnGetTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN).toString()); // 未到账提成
            // 展示提成数据
            if (configService.iosOnLining(Integer.parseInt(acceptData.getVersion()), SystemInfoUtil.getSystem(acceptData)))
                data.put("showTiCheng", false);
            else
                data.put("showTiCheng", spreadImgCount + shareCount > 0);
        } else {
            data.put("moneyToday", moneyToday.setScale(2, BigDecimal.ROUND_DOWN));
            data.put("moneyMonth", moneyMonth.setScale(2, BigDecimal.ROUND_DOWN));
            data.put("moneyLastMonth", moneyLastMonth.setScale(2, BigDecimal.ROUND_DOWN));
            data.put("money", user.getMyHongBao().setScale(2, BigDecimal.ROUND_DOWN));
            data.put("unGetMoney", unOpenmoney.setScale(2, BigDecimal.ROUND_DOWN));
            data.put("totalFanLiMoney", totalFanMoney.setScale(2, BigDecimal.ROUND_DOWN));// 累计返利
            data.put("totalTiChengMoney",
                    hongBaoV2Service.getTotalTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN));// 累计提成
            data.put("totalUnGetTiChengMoney",
                    hongBaoV2Service.getUnGetTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN)); // 未到账提成
            // 展示提成数据
            data.put("showTiCheng", spreadImgCount + shareCount > 0);
        }
      // IOS端数字按照字符串处理
      if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && Integer.parseInt(acceptData.getVersion()) > 33) {
         data.put("moneyToday", moneyToday.setScale(2, BigDecimal.ROUND_DOWN).toString());
         data.put("moneyMonth", moneyMonth.setScale(2, BigDecimal.ROUND_DOWN).toString());
         data.put("moneyLastMonth", moneyLastMonth.setScale(2, BigDecimal.ROUND_DOWN).toString());
         data.put("money", user.getMyHongBao().setScale(2, BigDecimal.ROUND_DOWN).toString());
         data.put("unGetMoney", unOpenmoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
         data.put("totalFanLiMoney", totalFanMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());// 累计返利
         data.put("totalTiChengMoney",
               hongBaoV2Service.getTotalTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN).toString());// 累计提成
         data.put("totalUnGetTiChengMoney",
               hongBaoV2Service.getUnGetTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN).toString()); // 未到账提成
         // 展示提成数据
         if (configService.iosOnLining(Integer.parseInt(acceptData.getVersion()),SystemInfoUtil.getSystem(acceptData)))
            data.put("showTiCheng", false);
         else
            data.put("showTiCheng", spreadImgCount + shareCount > 0);
      } else {
         data.put("moneyToday", moneyToday.setScale(2, BigDecimal.ROUND_DOWN));
         data.put("moneyMonth", moneyMonth.setScale(2, BigDecimal.ROUND_DOWN));
         data.put("moneyLastMonth", moneyLastMonth.setScale(2, BigDecimal.ROUND_DOWN));
         data.put("money", user.getMyHongBao().setScale(2, BigDecimal.ROUND_DOWN));
         data.put("unGetMoney", unOpenmoney.setScale(2, BigDecimal.ROUND_DOWN));
         data.put("totalFanLiMoney", totalFanMoney.setScale(2, BigDecimal.ROUND_DOWN));// 累计返利
         data.put("totalTiChengMoney",
               hongBaoV2Service.getTotalTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN));// 累计提成
         data.put("totalUnGetTiChengMoney",
               hongBaoV2Service.getUnGetTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN)); // 未到账提成
         // 展示提成数据
         data.put("showTiCheng", spreadImgCount + shareCount > 0);
      }
        user.setNoOpenHongBao(unOpenmoney);
        out.print(JsonUtil.loadTrueResult(data));
    }
      user.setNoOpenHongBao(unOpenmoney);
      out.print(JsonUtil.loadTrueResult(data));
   }
    /**
     * 获取用户的PID信息
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "gettbpidinfo")
    public void getUserPid(AcceptData acceptData, String uid, PrintWriter out) {
        ClientTBPid clientTBPid = null;
        // 用户已经登录
        if (!StringUtil.isNullOrEmpty(uid)) {
            TBPid tbPid = null;
            if (acceptData.getPlatform().equalsIgnoreCase("android")) {
                tbPid = tbPidService.getTBPid(Long.parseLong(uid), PidUser.TYPE_FANLI_ANDROID);
                if (tbPid != null) {
                    String siteId = tbPid.getPid().split("_")[2];
                    String adzoneId = tbPid.getPid().split("_")[3];
                    TaoBaoUnionConfig config = taoBaoUnionConfigService.getConfigByAppIdCache(siteId);
                    clientTBPid = new ClientTBPid(config.getAppKey(), tbPid.getPid(), siteId, adzoneId);
                } else {
                    clientTBPid = tbPidService.getAndroidDefault();
                }
   /**
    * 获取用户的PID信息
    *
    * @param acceptData
    * @param uid
    * @param out
    */
   @RequestMapping(value = "gettbpidinfo")
   public void getUserPid(AcceptData acceptData, String uid, PrintWriter out) {
      ClientTBPid clientTBPid = null;
      // 用户已经登录
      if (!StringUtil.isNullOrEmpty(uid)) {
         TBPid tbPid = null;
         if (acceptData.getPlatform().equalsIgnoreCase("android")) {
            tbPid = tbPidService.getTBPid(Long.parseLong(uid), PidUser.TYPE_FANLI_ANDROID);
            if (tbPid != null) {
               String siteId = tbPid.getPid().split("_")[2];
               String adzoneId = tbPid.getPid().split("_")[3];
               TaoBaoUnionConfig config = taoBaoUnionConfigService.getConfigByAppIdCache(siteId);
               clientTBPid = new ClientTBPid(config.getAppKey(), tbPid.getPid(), siteId, adzoneId);
            } else {
               clientTBPid = tbPidService.getAndroidDefault();
            }
            } else {
         } else {
                clientTBPid = tbPidService.getIOSDefault();
            clientTBPid = tbPidService.getIOSDefault();
            }
         }
        } else {
            if (acceptData.getPlatform().equalsIgnoreCase("android"))
                clientTBPid = tbPidService.getAndroidDefault();
            else
                clientTBPid = tbPidService.getIOSDefault();
        }
      } else {
         if (acceptData.getPlatform().equalsIgnoreCase("android"))
            clientTBPid = tbPidService.getAndroidDefault();
         else
            clientTBPid = tbPidService.getIOSDefault();
      }
        JSONObject data = new JSONObject();
        data.put("pidInfo", clientTBPid);
        out.print(JsonUtil.loadTrueResult(data));
    }
      JSONObject data = new JSONObject();
      data.put("pidInfo", clientTBPid);
      out.print(JsonUtil.loadTrueResult(data));
   }
    /**
     * 退出登录
     *
     * @param acceptData
     * @param uid        -用户ID
     * @param out
     */
    @RequestMapping(value = "logout")
    public void logOut(AcceptData acceptData, Long uid, PrintWriter out) {
        if (uid == null || uid == 0)
            return;
        if ("android".equalsIgnoreCase(acceptData.getPlatform())) {
            DeviceActive deviceActive = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
            // 需要解绑HW推送的用户绑定
            deviceTokenHWService.unBindDeviceToken(acceptData.getDevice());
            if (deviceActive != null) {
                // 解绑OPPO推送的用户绑定
                deviceTokenOPPOService.unBindUid(uid, deviceActive.getId());
                // 解绑VIVO推送的用户绑定
                deviceTokenVIVOService.unBindUid(uid, deviceActive.getId());
                // 解绑XM推送的用户绑定
                deviceTokenXMService.unBindUid(deviceActive.getId());
            }
        }
        out.print(JsonUtil.loadTrueResult(""));
    }
   /**
    * 退出登录
    *
    * @param acceptData
    * @param uid
    *            -用户ID
    * @param out
    */
   @RequestMapping(value = "logout")
   public void logOut(AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null || uid == 0)
         return;
      if ("android".equalsIgnoreCase(acceptData.getPlatform())) {
         DeviceActive deviceActive = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
         // 需要解绑HW推送的用户绑定
         deviceTokenHWService.unBindDeviceToken(acceptData.getDevice());
         if (deviceActive != null) {
            // 解绑OPPO推送的用户绑定
            deviceTokenOPPOService.unBindUid(uid, deviceActive.getId());
            // 解绑VIVO推送的用户绑定
            deviceTokenVIVOService.unBindUid(uid, deviceActive.getId());
            // 解绑XM推送的用户绑定
            deviceTokenXMService.unBindUid(deviceActive.getId());
         }
      }
      out.print(JsonUtil.loadTrueResult(""));
   }
    /**
     * 新版登录 V1.5.3
     *
     * @param acceptData
     * @param vcode
     * @param phone
     * @param code
     * @param loginType  登录方式: 1-手机登录 2-微信登录
     * @param request
     * @param out
     */
    @RequestMapping(value = "loginNew", method = RequestMethod.POST)
    public void loginNew(AcceptData acceptData, String vcode, String phone, String code, int loginType,
                         HttpServletRequest request, PrintWriter out) {
   /**
    * 新版登录 V1.5.3
    *
    * @param acceptData
    * @param vcode
    * @param phone
    * @param code
    * @param loginType
    *            登录方式: 1-手机登录 2-微信登录
    * @param request
    * @param out
    */
   @RequestMapping(value = "loginNew", method = RequestMethod.POST)
   public void loginNew(AcceptData acceptData, String vcode, String phone, String code, int loginType,
         HttpServletRequest request, PrintWriter out) {
        // 2.0以下版本不允许登录
        if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
            out.print("请升级到最新版本");
            return;
        }
      // 2.0以下版本不允许登录
      if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
         out.print("请升级到最新版本");
         return;
      }
        try {
            BusinessSystem system = getSystem(acceptData);
            if (system == null) {
                out.print(JsonUtil.loadFalseResult("系统不存在"));
                return;
            }
      try {
         BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
               acceptData.getPackages());
         if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
         }
            UserInfo userInfo = null;
            // 手机登录
            if (loginType == 1) {
                userInfo = userAccountService.loginPhone(new ProxyIP(request.getRemoteHost(), request.getRemotePort()), loginType, vcode, phone, system);
            }
         UserInfo userInfo = null;
         // 手机登录
         if (loginType == 1) {
            userInfo = userAccountService.loginPhone(new ProxyIP(request.getRemoteHost(),request.getRemotePort()), acceptData, loginType, vcode, phone, system.getAppid());
         }
            // 微信登录
            if (loginType == 2) {
                userInfo = userAccountService.loginWeiXin(new ProxyIP(request.getRemoteHost(), request.getRemotePort()), loginType, code, system);
            }
         // 微信登录
         if (loginType == 2) {
            userInfo = userAccountService.loginWinXin(new ProxyIP(request.getRemoteHost(),request.getRemotePort()), acceptData, loginType, code, system.getAppid());
         }
            if (userInfo == null) {
                out.print(JsonUtil.loadFalseResult("登录失败"));
            } else {
                JSONObject data = new JSONObject();
                data.put("userInfo", UserUtil.filterForClientUser(userInfo));
                out.print(JsonUtil.loadTrueResult(data));
         if (userInfo == null) {
            out.print(JsonUtil.loadFalseResult("登录失败"));
         } else {
            JSONObject data = new JSONObject();
            data.put("userInfo", UserUtil.filterForClientUser(userInfo));
            out.print(JsonUtil.loadTrueResult(data));
                final UserInfo uuser = userInfo;
                ThreadUtil.run(new Runnable() {
                    public void run() {
                        String device = acceptData.getDevice();
                        try {
                            // 同步自定义导航
                            homeNavbarUserService.synchroDeviceToUser(uuser.getId(), device);
                        } catch (Exception e) {
                            LogHelper.errorDetailInfo(e);
                        }
            final UserInfo uuser = userInfo;
            ThreadUtil.run(new Runnable() {
               public void run() {
                  String device = acceptData.getDevice();
                  try {
                     // 同步自定义导航
                     homeNavbarUserService.synchroDeviceToUser(uuser.getId(), device);
                  } catch (Exception e) {
                     LogHelper.errorDetailInfo(e);
                  }
                        // 绑定oppo推送
                        DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
                        if (active != null) {
                            deviceTokenOPPOService.bindUid(uuser.getId(), active.getId());
                            deviceTokenVIVOService.bindUid(uuser.getId(), active.getId());
                            deviceTokenXMService.bindUid(active.getId(), uuser.getId());
                        }
                    }
                });
            }
                  // 绑定oppo推送
                  DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
                  if (active != null) {
                     deviceTokenOPPOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenVIVOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenXMService.bindUid(active.getId(), uuser.getId());
                  }
               }
            });
         }
        } catch (UserAccountException e) {
            out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
            try {
                LogHelper.error("登录出错:" + e.getCode() + "-" + e.getMessage());
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        } catch (Exception e) {
            out.print(JsonUtil.loadFalseResult("登录失败"));
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
         try {
            LogHelper.error("登录出错:" + e.getCode() + "-" + e.getMessage());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult("登录失败"));
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }
   }
    /**
     * 绑定电话号码 V1.5.3
     *
     * @param acceptData
     * @param vcode
     * @param phone
     * @param out
     */
    @RequestMapping(value = "bindPhoneNew")
    public void bindPhoneNew(AcceptData acceptData, Long uid, String vcode, String phone, PrintWriter out) {
   /**
    * 绑定电话号码 V1.5.3
    *
    * @param acceptData
    * @param vcode
    * @param phone
    * @param out
    */
   @RequestMapping(value = "bindPhoneNew")
   public void bindPhoneNew(AcceptData acceptData, Long uid, String vcode, String phone, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        if (StringUtil.isNullOrEmpty(vcode)) {
            out.print(JsonUtil.loadFalseResult("验证码不能为空"));
            return;
        }
      if (StringUtil.isNullOrEmpty(vcode)) {
         out.print(JsonUtil.loadFalseResult("验证码不能为空"));
         return;
      }
        if (StringUtil.isNullOrEmpty(phone)) {
            out.print(JsonUtil.loadFalseResult("电话号码不能为空"));
            return;
        }
      if (StringUtil.isNullOrEmpty(phone)) {
         out.print(JsonUtil.loadFalseResult("电话号码不能为空"));
         return;
      }
        phone = phone.replaceAll(" ", "");
      phone = phone.replaceAll(" ", "");
        String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_BIND);
        if (Constant.IS_OUTNET) {
            if (!vcode.equalsIgnoreCase(oldVCode)) {
                out.print(JsonUtil.loadFalseResult(9001, "验证码错误,重新输入"));
                return;
            }
            redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_BIND);
        }
      String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_BIND);
      if (Constant.IS_OUTNET) {
         if (!vcode.equalsIgnoreCase(oldVCode)) {
            out.print(JsonUtil.loadFalseResult(9001, "验证码错误,重新输入"));
            return;
         }
         redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_BIND);
      }
        try {
            // 绑定用户
            userAccountService.bindPhoneNew(uid, phone);
      try {
         // 绑定用户
         userAccountService.bindPhoneNew(uid, phone);
            UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
            // 判断电话号码是否已经封禁
            ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
                    .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
            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;
            }
         UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
         // 判断电话号码是否已经封禁
         ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
               .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
         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;
         }
            JSONObject data = new JSONObject();
            data.put("userInfo", UserUtil.filterForClientUser(user));
            out.print(JsonUtil.loadTrueResult(data));
         JSONObject data = new JSONObject();
         data.put("userInfo", UserUtil.filterForClientUser(user));
         out.print(JsonUtil.loadTrueResult(data));
        } catch (UserAccountException e) {
            out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
        } catch (Exception e) {
            out.print(JsonUtil.loadFalseResult(1, "绑定失败"));
        }
    }
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult(1, "绑定失败"));
      }
   }
    /**
     * 更改微信
     *
     * @param acceptData
     * @param uid
     * @param code
     * @param out
     */
    @RequestMapping(value = "bindWeiXin")
    public void bindWeiXin(AcceptData acceptData, Long uid, String code, PrintWriter out) {
        BusinessSystem system = getSystem(acceptData);
   /**
    * 更改微信
    *
    * @param acceptData
    * @param uid
    * @param code
    * @param out
    */
   @RequestMapping(value = "bindWeiXin")
   public void bindWeiXin(AcceptData acceptData, Long uid, String code, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
        if (StringUtil.isNullOrEmpty(code)) {
            out.print(JsonUtil.loadFalseResult("请上传code"));
            return;
        }
      if (StringUtil.isNullOrEmpty(code)) {
         out.print(JsonUtil.loadFalseResult("请上传code"));
         return;
      }
        try {
            userAccountService.bindWeiXin(acceptData, uid, code);
      try {
         userAccountService.bindWeiXin(acceptData, uid, code);
            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;
            }
         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;
         }
            JSONObject data = new JSONObject();
            data.put("userInfo", UserUtil.filterForClientUser(user));
            out.print(JsonUtil.loadTrueResult(data));
        } catch (UserAccountException e) {
            out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
        }
    }
         JSONObject data = new JSONObject();
         data.put("userInfo", UserUtil.filterForClientUser(user));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
   }
}