admin
2019-02-21 d8fc7a24f8a2be1bc62aa38083a9f3dd3fbb3dc4
封禁用户相关操作
12个文件已修改
917 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/AuthCallBackController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java 585 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/GoodsController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/UserAccountController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserInfo.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/AuthCallBackController.java
@@ -81,16 +81,20 @@
            String taoBaoUid = data.optString("taobao_user_id");
            String nickName = data.optString("taobao_user_nick");
            LogHelper.test("uid:" + uid + "\n accessToken:" + accessToken);
            // LogHelper.test("uid:" + uid + "\n accessToken:" + accessToken);
            // 获取渠道ID与会员ID
            if ("share".equalsIgnoreCase(source)) {
                String relationId = TaoKeApiUtil.getRelationId(accessToken, Constant.TAOBAO_AUTH_APPKEY,
                        Constant.TAOBAO_AUTH_APPSECRET);// 渠道ID
                if (StringUtil.isNullOrEmpty(relationId))
                    LogHelper.test(uid + "渠道备案失败");
                userExtraTaoBaoInfoService.addRelationId(uid, relationId, taoBaoUid, true);
            } else {
                String specialId = TaoKeApiUtil.getSpecialId(accessToken, Constant.TAOBAO_AUTH_APPKEY,
                        Constant.TAOBAO_AUTH_APPSECRET);
                if (StringUtil.isNullOrEmpty(specialId))
                    LogHelper.test(uid + "会员备案失败");
                userExtraTaoBaoInfoService.addSpecialId(uid, specialId, taoBaoUid, true);
            }
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java
@@ -35,14 +35,19 @@
import com.yeshi.fanli.controller.admin.utils.AdminUtils;
import com.yeshi.fanli.entity.admin.UserInfoAdmin;
import com.yeshi.fanli.entity.bus.user.AccountDetails;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
import com.yeshi.fanli.entity.bus.user.HongBao;
import com.yeshi.fanli.entity.bus.user.MoneyRecord;
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
import com.yeshi.fanli.entity.taobao.PidOrder;
import com.yeshi.fanli.entity.taobao.ScanHistory;
import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.count.UserInfoCountService;
import com.yeshi.fanli.service.inter.goods.ShareService;
@@ -54,9 +59,11 @@
import com.yeshi.fanli.service.inter.user.AccountDetailsService;
import com.yeshi.fanli.service.inter.user.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.MoneyRecordService;
import com.yeshi.fanli.service.inter.user.ScanHistoryService;
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
@@ -103,16 +110,21 @@
    @Resource
    private AccountDetailsService accountDetailsService;
    @Resource
    private BindingAccountService bindingAccountService;
    @Resource
    private UserInfoCountService userInfoCountService;
    @Resource
    private UserActiveLogService userActiveLogService;
    @Resource
    private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
    @Resource
    private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
    @RequestMapping(value = "getUserList", method = RequestMethod.POST)
    public void getUserList(int pageIndex, String key, PrintWriter out) {
@@ -599,22 +611,28 @@
        }
    }
    /**
     * 查询用户信息列表--相关数据统计
     *
     * @param callback
     * @param pageIndex
     * @param key   查询条件
     * @param userType   用户类型:金冠、银冠、铜冠
     * @param days    查询天数
     * @param startTime  注册时间
     * @param endTime       注册时间
     * @param orderMode  排序方式  订单数量 今日订单  累计队员
     * @param key
     *            查询条件
     * @param userType
     *            用户类型:金冠、银冠、铜冠
     * @param days
     *            查询天数
     * @param startTime
     *            注册时间
     * @param endTime
     *            注册时间
     * @param orderMode
     *            排序方式 订单数量 今日订单 累计队员
     * @param out
     */
    @RequestMapping(value = "query")
    public void query(String callback, Integer pageIndex, Integer pageSize, String key, Integer userType,
            Integer days, String startTime,    String endTime, Integer orderMode, PrintWriter out) {
    public void query(String callback, Integer pageIndex, Integer pageSize, String key, Integer userType, Integer days,
            String startTime, String endTime, Integer orderMode, PrintWriter out) {
        try {
@@ -634,30 +652,29 @@
            if (pageSize == null)
                pageSize = Constant.PAGE_SIZE;
            Integer orderField = null;
            if (orderMode != null) {
                if (orderMode == 1 || orderMode == 2){
                if (orderMode == 1 || orderMode == 2) {
                    orderField = orderMode;
                    orderMode = 1;
                } else if (orderMode == 3 || orderMode == 4){
                } else if (orderMode == 3 || orderMode == 4) {
                    orderField = orderMode;
                    orderMode = 2;
                } else if (orderMode == 5 || orderMode == 6){
                } else if (orderMode == 5 || orderMode == 6) {
                    orderField = orderMode;
                    orderMode = 3;
                }
            }
            List<UserInfoAdmin> userList = userInfoService.query((pageIndex - 1) * pageSize, pageSize,
                    key, userType, days, startTime, endTime,orderField, orderMode);
            List<UserInfoAdmin> userList = userInfoService.query((pageIndex - 1) * pageSize, pageSize, key, userType,
                    days, startTime, endTime, orderField, orderMode);
            if (userList == null || userList.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
                return;
            }
            long count = userInfoService.queryCount(key, userType, days, startTime, endTime);
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
@@ -669,9 +686,9 @@
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            //data.put("sumMoney", sumMoney);
            // data.put("sumMoney", sumMoney);
            data.put("resultList", gson.toJson(userList));
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
@@ -679,18 +696,19 @@
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
        }
    }
    /**
     * 统计今日用户总情况
     *
     * @param callback
     * @param out
     */
    @RequestMapping(value = "countInfo")
    public void countInfo(String callback, PrintWriter out) {
        try {
            JSONObject data = new JSONObject();
            // 总数-普通用户
            long countNormal = userInfoCountService.countRank(0);
            // 总数-铜用户
@@ -699,56 +717,54 @@
            long countSilver = userInfoCountService.countRank(2);
            // 总数-金用户
            long countGold = userInfoCountService.countRank(3);
            data.put("countNormal", countNormal);
            data.put("countCuprum", countCuprum);
            data.put("countSilver", countSilver);
            data.put("countGold", countGold);
            /*
            // 统计所有总金额
            BigDecimal countTotalMoney = userInfoCountService.countAllMoney(null);
            // 统计所有可提现金额
            String minMoney = configService.get(Constant.EXTRACT_MIN_MONEY);
            if (minMoney == null) {
                minMoney = "20";
            }
            double min = Double.parseDouble(minMoney);
            BigDecimal countCanAssets = userInfoCountService.countAllMoney(min);
            data.put("countTotalMoney", countTotalMoney);
            data.put("countCanAssets", countCanAssets);
            */
             * // 统计所有总金额 BigDecimal countTotalMoney =
             * userInfoCountService.countAllMoney(null);
             *
             * // 统计所有可提现金额 String minMoney =
             * configService.get(Constant.EXTRACT_MIN_MONEY); if (minMoney ==
             * null) { minMoney = "20"; } double min =
             * Double.parseDouble(minMoney); BigDecimal countCanAssets =
             * userInfoCountService.countAllMoney(min);
             * data.put("countTotalMoney", countTotalMoney);
             * data.put("countCanAssets", countCanAssets);
             */
            // 累计用户数量
            long totalUser = userInfoCountService.countNewUser(null, null);
            // 流失用户数量(180天未使用登录并且无任何资金流动的账号数量)
            long loseUser = userInfoCountService.countLoseUser(180);
            // 累计有购买用户数
            long orderUser = userInfoCountService.countHasOrderUser();
            data.put("totalUser", totalUser);
            data.put("loseUser", loseUser);
            data.put("orderUser", orderUser);
            // 今日新增用户数量
            long todayUser = userInfoCountService.countNewUser(1, null);
            // 本月新增用户数量
            long monthUser = userInfoCountService.countNewUser(null, 1);
            data.put("todayUser", todayUser);
            data.put("monthUser", monthUser);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
        }
    }
    /**
     * 修改用户的状态、等级信息
     *
     * @param callback
     * @param userInfo
     * @param out
@@ -756,51 +772,140 @@
    @RequestMapping(value = "setInfo")
    public void setInfo(String callback, UserInfo userInfo, PrintWriter out) {
        try {
            Long id = userInfo.getId();
            if (id == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
                return;
            }
            UserInfo currentInfo = userInfoService.selectByPKey(id);
            if (currentInfo == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户已不存在"));
                return;
            }
            currentInfo = new UserInfo(id);
            boolean hasChange = false;
            // 等级修改
            Integer rank = userInfo.getRank();
            if (rank != null) {
                hasChange = true;
                currentInfo.setRank(rank);
            }
            // 状态修改
            Integer state = userInfo.getState();
            if (state != null) {
                hasChange = true;
                currentInfo.setState(state);
                if (state != null && state == UserInfo.STATE_FORBIDDEN)
                    currentInfo.setStateDesc("管理员封禁");
            }
            if (hasChange) {
                userInfoService.updateByPrimaryKeySelective(currentInfo);
                UserInfo nowUser = userInfoService.selectByPKey(id);
                if (state != null && state == UserInfo.STATE_FORBIDDEN) {
                    // 加入封禁的账号列表
                    ForbiddenUserIdentifyCode forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
                    forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId);
                    forbiddenUserIdentifyCode.setIdentifyCode(nowUser.getWxUnionId());
                    forbiddenUserIdentifyCode.setBeiZhu(nowUser.getWxName());
                    try {
                        forbiddenUserIdentifyCodeService.addIdentifyCode(forbiddenUserIdentifyCode);
                    } catch (ForbiddenUserIdentifyCodeException e) {
                        e.printStackTrace();
                    }
                    // 电话号码
                    forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
                    forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.phone);
                    forbiddenUserIdentifyCode.setIdentifyCode(nowUser.getPhone());
                    try {
                        forbiddenUserIdentifyCodeService.addIdentifyCode(forbiddenUserIdentifyCode);
                    } catch (ForbiddenUserIdentifyCodeException e) {
                        e.printStackTrace();
                    }
                    // 淘宝
                    UserExtraTaoBaoInfo taoBao = userExtraTaoBaoInfoService.getByUid(nowUser.getId());
                    if (taoBao != null && !StringUtil.isNullOrEmpty(taoBao.getTaoBaoUid())) {
                        forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
                        forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.taobaoUid);
                        forbiddenUserIdentifyCode.setIdentifyCode(taoBao.getTaoBaoUid());
                        try {
                            forbiddenUserIdentifyCodeService.addIdentifyCode(forbiddenUserIdentifyCode);
                        } catch (ForbiddenUserIdentifyCodeException e) {
                            e.printStackTrace();
                        }
                    }
                    // 查询支付宝绑定
                    List<BindingAccount> list = bindingAccountService.getBindingAccountByUid(nowUser.getId());
                    if (list != null)
                        for (BindingAccount ba : list) {
                            forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
                            forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.alipayAccount);
                            forbiddenUserIdentifyCode.setIdentifyCode(ba.getAccount());
                            forbiddenUserIdentifyCode.setBeiZhu(ba.getName());
                            try {
                                forbiddenUserIdentifyCodeService.addIdentifyCode(forbiddenUserIdentifyCode);
                            } catch (ForbiddenUserIdentifyCodeException e) {
                                e.printStackTrace();
                            }
                        }
                } else if (state != null && state == UserInfo.STATE_NORMAL) {
                    // 解封微信
                    ForbiddenUserIdentifyCode forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
                            .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId,
                                    nowUser.getWxUnionId());
                    if (forbiddenUserIdentifyCode != null)
                        forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
                    // 解封手机
                    forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
                            .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, nowUser.getPhone());
                    if (forbiddenUserIdentifyCode != null)
                        forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
                    // 解封淘宝
                    UserExtraTaoBaoInfo taoBao = userExtraTaoBaoInfoService.getByUid(nowUser.getId());
                    if (taoBao != null && !StringUtil.isNullOrEmpty(taoBao.getTaoBaoUid())) {
                        forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
                                ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, taoBao.getTaoBaoUid());
                        if (forbiddenUserIdentifyCode != null)
                            forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
                    }
                    // 解封支付宝
                    List<BindingAccount> list = bindingAccountService.getBindingAccountByUid(nowUser.getId());
                    if (list != null)
                        for (BindingAccount ba : list) {
                            forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
                                    ForbiddenUserIdentifyCodeTypeEnum.alipayAccount, ba.getAccount());
                            if (forbiddenUserIdentifyCode != null)
                                forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
                        }
                }
                JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
            } else {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("无可修改内容"));
            }
        } catch (Exception e) {
        } catch (
        Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败"));
        }
    }
    /**
     * 删除绑定的账户信息: 支付宝  微信
     * 删除绑定的账户信息: 支付宝 微信
     *
     * @param callback
     * @param bindId
     * @param out
@@ -827,7 +932,7 @@
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
        }
    }
    /**
     * 
     * @param data
@@ -839,19 +944,17 @@
    @RequestMapping("unBindUserInfo")
    public void unBindUserInfo(String callback, Long id, Integer type, PrintWriter out) {
        try {
            if (id == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该用户!"));
                return;
            }
            if (type == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("账户类型不可为空!"));
                return;
            }
            UserInfo find = userInfoService.getUserById(id);
            if (find == null) {
@@ -885,48 +988,45 @@
            userInfoService.deleteBindInfo(find, type);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("解绑成功"));
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
        }
    }
    @RequestMapping(value = "queryMyFirstTeams")
    public void queryMyFirstTeams(String callback, Integer pageIndex, Integer pageSize, String key,
            Long bossId, PrintWriter out) {
    public void queryMyFirstTeams(String callback, Integer pageIndex, Integer pageSize, String key, Long bossId,
            PrintWriter out) {
        try {
            if (bossId == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
                return;
            }
            if (pageIndex == null)
                pageIndex = 1;
            if (pageSize == null)
                pageSize = Constant.PAGE_SIZE;
            List<ThreeSale> firstTeamList =
                    threeSaleService.queryMyFirstTeamList((pageIndex - 1) * pageSize, pageSize, key, bossId);
            List<ThreeSale> firstTeamList = threeSaleService.queryMyFirstTeamList((pageIndex - 1) * pageSize, pageSize,
                    key, bossId);
            if (firstTeamList == null || firstTeamList.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无一度队员"));
                return;
            }
            /* 获取邀请用户头像 、昵称 */
            for (ThreeSale threeSale: firstTeamList) {
            for (ThreeSale threeSale : firstTeamList) {
                UserInfo worker = threeSale.getWorker();
                if (worker == null) {
                    worker = new UserInfo();
                    threeSale.setWorker(worker);
                } else{
                } else {
                    Long id = worker.getId();
                    UserInfo currentInfo = userInfoService.selectByPKey(id);
                    if (currentInfo != null) {
                        worker.setNickName(currentInfo.getNickName());
@@ -934,7 +1034,7 @@
                    }
                }
            }
            long count = threeSaleService.queryCountMyFirstTeamList(key, bossId);
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
@@ -947,49 +1047,47 @@
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            data.put("list", gson.toJson(firstTeamList));
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
        }
    }
    @RequestMapping(value = "queryMySecondTeams")
    public void queryMySecondTeams(String callback, Integer pageIndex, Integer pageSize, String key,
            Long bossId, PrintWriter out) {
    public void queryMySecondTeams(String callback, Integer pageIndex, Integer pageSize, String key, Long bossId,
            PrintWriter out) {
        try {
            if (bossId == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
                return;
            }
            if (pageIndex == null)
                pageIndex = 1;
            if (pageSize == null)
                pageSize = Constant.PAGE_SIZE;
            List<ThreeSale> firstTeamList =
                    threeSaleService.queryMySecondTeamList((pageIndex - 1) * pageSize, pageSize, key, bossId);
            List<ThreeSale> firstTeamList = threeSaleService.queryMySecondTeamList((pageIndex - 1) * pageSize, pageSize,
                    key, bossId);
            if (firstTeamList == null || firstTeamList.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无二度队员"));
                return;
            }
            /* 获取邀请用户头像 、昵称 */
            for (ThreeSale threeSale: firstTeamList) {
            for (ThreeSale threeSale : firstTeamList) {
                UserInfo worker = threeSale.getWorker();
                if (worker == null) {
                    worker = new UserInfo();
                    threeSale.setWorker(worker);
                } else{
                } else {
                    Long id = worker.getId();
                    UserInfo currentInfo = userInfoService.selectByPKey(id);
                    if (currentInfo != null) {
                        worker.setNickName(currentInfo.getNickName());
@@ -997,7 +1095,7 @@
                    }
                }
            }
            long count = threeSaleService.queryCountMySecondTeamList(key, bossId);
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
@@ -1010,43 +1108,41 @@
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            data.put("list", gson.toJson(firstTeamList));
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
        }
    }
    @RequestMapping(value = "deleteThreeSale")
    public void deleteThreeSale(String callback, Long id, PrintWriter out) {
        try {
            if (id == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
                return;
            }
            int count = threeSaleService.deleteByPrimaryKey(id);
            if (count > 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
            } else{
            } else {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
            }
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
        }
    }
    /**
     * 队员关系
     *
     * @param pageIndex
     * @param key
     * @param state
@@ -1057,7 +1153,7 @@
    @RequestMapping(value = "getRelationList")
    public void getRelationList(String callback, Integer pageIndex, Integer pageSize, Long uid, Integer type,
            Integer state, String startTime, String endTime, PrintWriter out) {
        if (pageIndex == null || pageIndex < 1) {
            pageIndex = 1;
        }
@@ -1065,9 +1161,9 @@
        if (pageSize == null || pageSize < 1) {
            pageSize = Constant.PAGE_SIZE;
        }
        try {
            if (!StringUtil.isNullOrEmpty(endTime)) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                Date enddate = sdf.parse(endTime);
@@ -1076,7 +1172,7 @@
                c.add(Calendar.DAY_OF_MONTH, 1);// 今天+1天
                endTime = sdf.format(c.getTime());
            }
            List<ThreeSale> listQuery = null;
            if (type == 0) {
                // 上级用户
@@ -1087,20 +1183,20 @@
                listQuery = threeSaleService.listSuperiorQuery((pageIndex - 1) * pageSize, pageSize, state, uid);
            } else if (type == 1) {
                // 一级用户
                listQuery = threeSaleService.listFirstTeamQuery((pageIndex - 1) * pageSize, pageSize, uid,
                        state, startTime, endTime);
                listQuery = threeSaleService.listFirstTeamQuery((pageIndex - 1) * pageSize, pageSize, uid, state,
                        startTime, endTime);
            } else if (type == 2) {
                // 二级用户
                listQuery = threeSaleService.listSecondTeamQuery((pageIndex - 1) * pageSize, pageSize, uid,
                        state, startTime, endTime);
                listQuery = threeSaleService.listSecondTeamQuery((pageIndex - 1) * pageSize, pageSize, uid, state,
                        startTime, endTime);
            }
            if (listQuery == null || listQuery.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
                return;
            }
            for (ThreeSale threeSale: listQuery) {
            for (ThreeSale threeSale : listQuery) {
                Integer expire = threeSale.getExpire();
                if (threeSale.getState()) {
                    threeSale.setExpire(1); // 邀请成功
@@ -1112,7 +1208,7 @@
                    }
                }
            }
            long count = 0;
            if (type == 0) {
                // 上级用户
@@ -1124,25 +1220,25 @@
                // 二级用户
                count = threeSaleService.countSecondTeamQuery(uid, state, startTime, endTime);
            }
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
            PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            data.put("result_list", listQuery);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
            e.printStackTrace();
        }
        }
    }
    /**
     * 用户账户明细
     *
     * @param callback
     * @param pageIndex
     * @param pageSize
@@ -1150,7 +1246,7 @@
     * @param out
     */
    @RequestMapping(value = "getAccountDetails")
    public void getAccountDetails(String callback, Integer pageIndex,Integer pageSize, Long uid, PrintWriter out) {
    public void getAccountDetails(String callback, Integer pageIndex, Integer pageSize, Long uid, PrintWriter out) {
        if (pageIndex == null || pageIndex < 1) {
            pageIndex = 1;
        }
@@ -1158,67 +1254,72 @@
        if (pageSize == null || pageSize < 1) {
            pageSize = Constant.PAGE_SIZE;
        }
        if (uid == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
        }
        try {
            List<AccountDetails> detailsList = accountDetailsService.findAccountDetailsList(uid, pageIndex);
            if (detailsList == null || detailsList.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
                return;
            }
            int count = accountDetailsService.getCount(uid);
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
            PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            data.put("result_list", GsonUtil.toJsonExpose(detailsList));
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
        }
    }
    /**
     * 根据渠道   统计当日新增用户数量
     * @param channelArray 名字数组
     * @param dateType 类型  1日  2月  3年
     * @param year 2018
     * @param startTime 2018-12-01
     * @param endTime   2018-12-01
     * 根据渠道 统计当日新增用户数量
     *
     * @param channelArray
     *            名字数组
     * @param dateType
     *            类型 1日 2月 3年
     * @param year
     *            2018
     * @param startTime
     *            2018-12-01
     * @param endTime
     *            2018-12-01
     * @param out
     */
    @RequestMapping(value = "getNewUserCharts")
    public void getNewUserCharts(String callback, String channelArray, Integer dateType,
         String year, String startTime, String endTime, PrintWriter out) {
    public void getNewUserCharts(String callback, String channelArray, Integer dateType, String year, String startTime,
            String endTime, PrintWriter out) {
        String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
        if (validateMsg != null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
            return;
        }
        if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
            startTime = null;
            endTime = null;
        }
        List<String> channelList = null;
        if (channelArray != null && channelArray.trim().length() > 0) {
            Gson gson = new Gson();
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {
            }.getType());
        }
        if (channelList == null || channelList.size() == 0) {
@@ -1226,44 +1327,42 @@
            channelList.add("all");
        }
        if (dateType == 1 && year != null) {
            year = null; // 设置为空
        } else if (dateType == 2) {
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
        } else if (dateType == 3) {
            if (year != null)
                year = null;
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
                year = null;
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
        }
        try {
            Gson gson = new Gson();
            Object objectDate = null;
            List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
            JSONArray line_list = new JSONArray();
            for (String channel : channelList) {
                List<Map<String, Object>> list = userInfoCountService.countNewUserByDate(channel,
                        dateType, year, startTime, endTime);
                List<Map<String, Object>> list = userInfoCountService.countNewUserByDate(channel, dateType, year,
                        startTime, endTime);
                if ("all".equalsIgnoreCase(channel)) {
                    channel = "总计";
                }
                JSONObject innerList = new JSONObject();
                innerList.put("name", channel);
@@ -1278,10 +1377,9 @@
                    }
                    innerList.put("data", gson.toJson(map.get("value")));
                }
                line_list.add(innerList);
            }
            JSONObject data = new JSONObject();
            if (objectDate != null) {
@@ -1289,9 +1387,9 @@
            } else {
                data.put("xAxis_list", gson.toJson(dateList));
            }
            data.put("line_list", line_list);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
@@ -1299,41 +1397,47 @@
            e.printStackTrace();
        }
    }
    /**
     * 根据渠道   统计当日新增用户数量
     * @param channelArray 名字数组
     * @param dateType 类型  1日  2月  3年
     * @param year 2018
     * @param startTime 2018-12-01
     * @param endTime   2018-12-01
     * 根据渠道 统计当日新增用户数量
     *
     * @param channelArray
     *            名字数组
     * @param dateType
     *            类型 1日 2月 3年
     * @param year
     *            2018
     * @param startTime
     *            2018-12-01
     * @param endTime
     *            2018-12-01
     * @param out
     */
    @RequestMapping(value = "getTodayBuyRate")
    public void getTodayBuyRate(String callback, String channelArray, Integer dateType,
         String year, String startTime, String endTime, Integer orderNum, PrintWriter out) {
    public void getTodayBuyRate(String callback, String channelArray, Integer dateType, String year, String startTime,
            String endTime, Integer orderNum, PrintWriter out) {
        String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
        if (validateMsg != null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
            return;
        }
        if (dateType == 2 && StringUtil.isNullOrEmpty(year)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请输入年份"));
            return;
        }
        if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
            startTime = null;
            endTime = null;
        }
        List<String> channelList = null;
        if (channelArray != null && channelArray.trim().length() > 0) {
            Gson gson = new Gson();
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {
            }.getType());
        }
        if (channelList == null || channelList.size() == 0) {
@@ -1341,44 +1445,42 @@
            channelList.add("all");
        }
        if (dateType == 1 && year != null) {
            year = null; // 设置为空
        } else if (dateType == 2) {
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
        } else if (dateType == 3) {
            if (year != null)
                year = null;
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
                year = null;
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
        }
        try {
            Gson gson = new Gson();
            Object objectDate = null;
            List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
            JSONArray line_list = new JSONArray();
            for (String channel : channelList) {
                List<Map<String, Object>> list = userInfoCountService.getTodayBuyRate(channel, dateType,
                        year, startTime, endTime);
                List<Map<String, Object>> list = userInfoCountService.getTodayBuyRate(channel, dateType, year,
                        startTime, endTime);
                if ("all".equalsIgnoreCase(channel)) {
                    channel = "总计";
                }
                JSONObject innerList = new JSONObject();
                innerList.put("name", channel);
@@ -1393,10 +1495,9 @@
                    }
                    innerList.put("data", gson.toJson(map.get("value")));
                }
                line_list.add(innerList);
            }
            JSONObject data = new JSONObject();
            if (objectDate != null) {
@@ -1404,78 +1505,80 @@
            } else {
                data.put("xAxis_list", gson.toJson(dateList));
            }
            data.put("line_list", line_list);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
            e.printStackTrace();
        }
    }
    /**
     * 当周产生3单的新增用户概率
     * 当周产生3单的新增用户概率
     *
     * @param callback
     * @param channelArray 渠道名称
     * @param startTime
     * @param channelArray
     *            渠道名称
     * @param startTime
     * @param endTime
     * @param orderNum 订单数量
     * @param orderNum
     *            订单数量
     * @param out
     */
    @RequestMapping(value = "getWeekBuyRate")
    public void getWeekBuyRate(String callback, String channelArray, String startTime, String endTime,
            Integer orderNum, PrintWriter out) {
    public void getWeekBuyRate(String callback, String channelArray, String startTime, String endTime, Integer orderNum,
            PrintWriter out) {
        if (StringUtil.isNullOrEmpty(startTime) || StringUtil.isNullOrEmpty(endTime)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当周订单统计对应时间区域不能为空"));
            return;
        }
        List<String> channelList = null;
        if (channelArray != null && channelArray.trim().length() > 0) {
            Gson gson = new Gson();
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {
            }.getType());
        }
        if (channelList == null || channelList.size() == 0) {
            channelList = new ArrayList<String>();
            channelList.add("all");
        }
        if (orderNum < 1) {
            orderNum = 1;
        }
        try {
            Gson gson = new Gson();
            List<String> dateList = AdminUtils.getDateList(1, startTime, endTime, null);
            JSONArray line_list = new JSONArray();
            for (String channel : channelList) {
                List<Object> list = userInfoCountService.getWeekBuyRate(channel, startTime, endTime,
                        orderNum, dateList);
                List<Object> list = userInfoCountService.getWeekBuyRate(channel, startTime, endTime, orderNum,
                        dateList);
                if ("all".equalsIgnoreCase(channel)) {
                    channel = "总计";
                }
                JSONObject innerList = new JSONObject();
                innerList.put("name", channel);
                innerList.put("data", gson.toJson(list));
                line_list.add(innerList);
            }
            JSONObject data = new JSONObject();
            data.put("xAxis_list", gson.toJson(dateList));
            data.put("line_list", line_list);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
@@ -1483,5 +1586,5 @@
            e.printStackTrace();
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/client/GoodsController.java
@@ -11,6 +11,7 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.taobao.ClientTBPid;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.TBPid;
@@ -23,6 +24,7 @@
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.user.TBPidService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.factory.MonitorFactory;
@@ -49,6 +51,9 @@
    @Resource
    private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
    @Resource
    private UserInfoService userInfoService;
    /**
     * 获取淘宝的分享链接
     * 
@@ -66,6 +71,12 @@
            return;
        }
        UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
        if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
            out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
            return;
        }
        if (auctionId == null || auctionId <= 0) {
            out.print(JsonUtil.loadFalseResult(2, "商品ID不能为空"));
            return;
fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java
@@ -32,6 +32,7 @@
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.monitor.MonitorService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService;
import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
import com.yeshi.fanli.util.AESUtil;
@@ -71,6 +72,9 @@
    @Resource
    private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
    @Resource
    private UserInfoService userInfoService;
    // 获取商品分享链接
    @RequestMapping(value = "getGoodsShareUrl")
    public void getGoodsShareUrl(AcceptData acceptData, long id, PrintWriter out) {
@@ -95,6 +99,12 @@
            return;
        }
        UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
        if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
            out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
            return;
        }
        if (auctionId == null || auctionId <= 0) {
            out.print(JsonUtil.loadFalseResult(2, "商品ID不能为空"));
            return;
fanli/src/main/java/com/yeshi/fanli/controller/client/UserAccountController.java
@@ -15,6 +15,8 @@
import com.alipay.api.AlipayApiException;
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.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;
@@ -44,6 +46,7 @@
import com.yeshi.fanli.service.inter.user.AccountMessageService;
import com.yeshi.fanli.service.inter.user.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ExtractService;
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;
@@ -138,6 +141,9 @@
    @Resource
    private UserShareGoodsRecordService userShareGoodsRecordService;
    @Resource
    private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
    private static final String PASSWORD_MAX_ERROR = "password_max_error";
    private static final String EXTRACT_MIN_MONEY = "extract_min_money";
    private static final String EXTRACT_MAX_MONEY = "extract_max_money";
@@ -176,6 +182,7 @@
            redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
        }
        UserInfo tbUserInfo = new UserInfo();
        if (!StringUtil.isNullOrEmpty(tbSession)) {
            try {
                tbSession = DESUtil.decode(tbSession.replace("\n", ""), StringUtil.getBase64String("YeShiFANLI889*+"),
@@ -187,12 +194,14 @@
            tbOpenid = tbs.optString("openId");
            tbNickName = tbs.optString("nick");
            tbPortrait = tbs.optString("avatarUrl");
            // 淘宝ID
            tbUserInfo.setTaoBaoUid(tbs.optString("taobao_user_id"));
        }
        UserInfo tbUserInfo = new UserInfo();
        tbUserInfo.setOpenid(tbOpenid);
        tbUserInfo.setTbName(tbNickName);
        tbUserInfo.setTbPic(tbPortrait);
        try {
            LoginResult result = userAccountService.login(request, first, system.getAppid(), code, phone, tbUserInfo,
                    wxinstall, loginType);
@@ -412,15 +421,32 @@
        String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN);
        if (!vcode.equalsIgnoreCase(oldVCode)) {
            out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
            return;
        if (Constant.IS_OUTNET) {
            if (!vcode.equalsIgnoreCase(oldVCode)) {
                out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
                return;
            }
            redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
        }
        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) {
                    UserInfo update = new UserInfo(uid);
                    update.setState(UserInfo.STATE_FORBIDDEN);
                    update.setStateDesc("绑定被封禁的电话号码被封禁");
                    userInfoService.updateByPrimaryKeySelective(update);
                }
                return;
            }
            JSONObject data = new JSONObject();
            data.put("user", UserUtil.filterForClientUser(user));
            out.print(JsonUtil.loadTrueResult(data));
@@ -482,6 +508,8 @@
            return;
        }
        String taoBaoUid = "";
        if (!StringUtil.isNullOrEmpty(tbSession)) {
            try {
                tbSession = DESUtil.decode(tbSession.replace("\n", ""), StringUtil.getBase64String("YeShiFANLI889*+"),
@@ -493,11 +521,32 @@
            tbOpenid = session.optString("openId");
            tbNickName = session.optString("nick");
            tbPortrait = session.optString("avatarUrl");
            taoBaoUid = session.optString("taobao_user_id");
        }
        try {
            userAccountService.bindTaoBao(uid, tbOpenid, tbNickName, tbPortrait);
            UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
            // 判断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) {
                        UserInfo update = new UserInfo(uid);
                        update.setState(UserInfo.STATE_FORBIDDEN);
                        update.setStateDesc("绑定被封禁的淘宝号被封禁");
                        userInfoService.updateByPrimaryKeySelective(update);
                    }
                    return;
                }
            }
            JSONObject data = new JSONObject();
            data.put("user", UserUtil.filterForClientUser(user));
            out.print(JsonUtil.loadTrueResult(data));
@@ -553,6 +602,22 @@
        try {
            userAccountService.changeWXBind(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) {
                    UserInfo update = new UserInfo(uid);
                    update.setState(UserInfo.STATE_FORBIDDEN);
                    update.setStateDesc("绑定被封禁的微信号被封禁");
                    userInfoService.updateByPrimaryKeySelective(update);
                }
                return;
            }
            JSONObject data = new JSONObject();
            data.put("user", UserUtil.filterForClientUser(user));
            out.print(JsonUtil.loadTrueResult(data));
@@ -816,6 +881,23 @@
            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) {
                UserInfo update = new UserInfo(uid);
                update.setState(UserInfo.STATE_FORBIDDEN);
                update.setStateDesc("绑定被封禁的支付宝被封禁");
                userInfoService.updateByPrimaryKeySelective(update);
            }
            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",
fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java
@@ -248,6 +248,12 @@
            // }
            // });
            if (find != null) {
                if (find.getState() != UserInfo.STATE_NORMAL) {
                    out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER,
                            Constant.FORBIDDEN_USER_REASON_DESC));
                    return;
                }
                // 邀请关系生效
                threeSaleSerivce.effective(find);
                // 重新计算用户等级
@@ -590,15 +596,14 @@
        final UserInfo uuser = user;
        ThreadUtil.run(new Runnable() {
            public void run() {
                try {
                    // 获取邀请码:若无邀请码且存在有效的队员关系 则自动生成邀请码
                    userInfoExtraService.getUserInviteCode(uuser.getId());
                } catch (UserInfoExtraException e) {
                    e.printStackTrace();
                }
                LogHelper.userInfo(GsonUtil.toJsonExpose(uuser));
                uuser.setLastLoginIp(remotIP);
                uuser.setLastLoginTime(java.lang.System.currentTimeMillis());
@@ -1292,6 +1297,12 @@
            HttpServletRequest request, int type, PrintWriter out) {
        UserInfo user = userInfoService.getUserById(uid);
        if (user == null) {
            user = userInfoService.getUserByIdWithMybatis(uid);
            if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
                out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
                return;
            }
            out.print(JsonUtil.loadFalseResult("用户不存在"));
            return;
        }
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java
@@ -39,13 +39,13 @@
    BigDecimal getMyHB(Long id);
    // 根据AppId与微信unionID获取用户
    UserInfo getUserInfoByAppIdAndWXUnionId(@Param("appId") String appId, @Param("unionId") String unionId);
    List<UserInfo> listByAppIdAndWXUnionId(@Param("appId") String appId, @Param("unionId") String unionId);
    // 根据AppId与淘宝OpenId获取用户
    UserInfo getUserInfoByAppIdAndTaoBaoOpenId(@Param("appId") String appId, @Param("openId") String openId);
    List<UserInfo> listByAppIdAndTaoBaoOpenId(@Param("appId") String appId, @Param("openId") String openId);
    // 根据AppId与电话号码获取用户
    UserInfo getUserInfoByAppIdAndPhone(@Param("appId") String appId, @Param("phone") String phone);
    List<UserInfo> listByAppIdAndPhone(@Param("appId") String appId, @Param("phone") String phone);
    Long getMaxUid();
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserInfo.java
@@ -26,6 +26,7 @@
    public static int STATE_NORMAL = 0;// 正常状态
    public static int STATE_DELETE = 1;// 删除状态
    public static int STATE_FORBIDDEN = 2;// 封禁状态
    public static int STATE_DELETE_OUT_OF_DATE = 4;// 用户长期不活跃被删除
    @Id
    // @GeneratedValue(strategy = GenerationType.SEQUENCE)
@@ -152,6 +153,16 @@
    @Transient
    @Expose
    private String rankNamePicture;// 等级名称图片
    @Transient
    private String taoBaoUid;// 淘宝的用户ID
    public String getTaoBaoUid() {
        return taoBaoUid;
    }
    public void setTaoBaoUid(String taoBaoUid) {
        this.taoBaoUid = taoBaoUid;
    }
    public Integer getState() {
        return state;
fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml
@@ -186,24 +186,22 @@
        `yeshi_ec_hongbao` hb WHERE hb.`uid` = #{id};
    </select>
    <!-- 根据AppId与微信unionID获取用户 -->
    <select id="getUserInfoByAppIdAndWXUnionId" resultMap="BaseResultMap">
    <select id="listByAppIdAndWXUnionId" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_user where appid=#{appId} and wx_union_id=#{unionId}
        limit 1
    </select>
    <!-- 根据AppId与淘宝OpenId获取用户 -->
    <select id="getUserInfoByAppIdAndTaoBaoOpenId" resultMap="BaseResultMap">
    <select id="listByAppIdAndTaoBaoOpenId" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_user where appid=#{appId} and identifycode=#{openId}
        limit 1
    </select>
    <!-- 根据AppId与电话号码获取用户 -->
    <select id="getUserInfoByAppIdAndPhone" resultMap="BaseResultMap">
    <select id="listByAppIdAndPhone" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_user where appid=#{appId} and phone=#{phone} limit 1
        from yeshi_ec_user where appid=#{appId} and phone=#{phone}
    </select>
    <select id="getMaxUid" resultType="java.lang.Long">select max(id) from
        yeshi_ec_user
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -13,6 +13,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.tencentcloud.COSManager;
import com.google.gson.Gson;
import com.qcloud.cos.model.COSObjectSummary;
@@ -31,6 +33,8 @@
import com.yeshi.fanli.entity.bus.user.AccountDetails;
import com.yeshi.fanli.entity.bus.user.AccountMessage;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
import com.yeshi.fanli.entity.bus.user.HongBao;
import com.yeshi.fanli.entity.bus.user.LoginResult;
import com.yeshi.fanli.entity.bus.user.MoneyRecord;
@@ -45,6 +49,7 @@
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
import com.yeshi.fanli.service.inter.msg.UserAccountMsgNotificationService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
import com.yeshi.fanli.service.inter.user.UserAccountService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
@@ -57,9 +62,6 @@
import com.yeshi.fanli.util.wx.WXLoginUtil;
import net.sf.json.JSONObject;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.tencentcloud.COSManager;
@Service
public class UserAccountServiceImpl implements UserAccountService {
@@ -104,9 +106,12 @@
    @Resource
    private UserAccountMsgNotificationService userAccountMsgNotificationService;
    @Resource
    private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
    @Resource
    private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
    @Transactional
    @Override
@@ -132,7 +137,20 @@
            WeiXinUser weiXinUser = null;
            switch (loginType) {
            case 1:// 淘宝
                    // 判断淘宝是否被封禁
                if (!StringUtil.isNullOrEmpty(tbUserInfo.getTaoBaoUid())) {
                    ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
                            ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, tbUserInfo.getTaoBaoUid());
                    if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective())
                        throw new UserAccountException(Constant.CODE_FORBIDDEN_USER,
                                Constant.FORBIDDEN_USER_REASON_DESC);
                }
                userInfo = getUserInfoByTaoBaoOpenId(appId, tbUserInfo.getOpenid());
                // 判断用户是否被删除
                if (userInfo != null && userInfo.getState() != null
                        && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE
                                || userInfo.getState() == UserInfo.STATE_DELETE))
                    userInfo = null;
                if (userInfo == null) {// 原先的账号不存在
                    userInfo = new UserInfo();
                    userInfo.setAppId(appId);
@@ -164,7 +182,18 @@
                if (weiXinUser == null)
                    throw new UserAccountException(1001, "无法获取到微信个人信息");
                LogHelper.test("微信授权用户信息:" + new Gson().toJson(weiXinUser));
                // 判断微信unionid是否被封禁
                ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
                        ForbiddenUserIdentifyCodeTypeEnum.wxUnionId, weiXinUser.getUnionid());
                if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective())
                    throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
                userInfo = getUserInfoByWXUnionId(appId, weiXinUser.getUnionid());
                // 判断用户是否被删除
                if (userInfo != null && userInfo.getState() != null
                        && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE
                                || userInfo.getState() == UserInfo.STATE_DELETE))
                    userInfo = null;
                // 直接用的微信登录
                if (lastUser == null) {
                    if (userInfo != null) {
@@ -290,7 +319,19 @@
                    }
                }
            case 3:// 手机号码
                    // 判断手机号码是否被封禁
                ForbiddenUserIdentifyCode identifyCode1 = forbiddenUserIdentifyCodeService
                        .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
                if (identifyCode1 != null && identifyCode1.getEffective() != null && identifyCode1.getEffective())
                    throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
                userInfo = getUserInfoByPhone(appId, phone);
                // 判断用户是否被删除
                if (userInfo != null && userInfo.getState() != null
                        && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE
                                || userInfo.getState() == UserInfo.STATE_DELETE))
                    userInfo = null;
                if (userInfo == null) {// 原先的账号不存在
                    userInfo = new UserInfo();
                    userInfo.setAppId(appId);
@@ -342,6 +383,12 @@
        WeiXinUser weiXinUser = null;
        switch (loginType) {
        case 1:// 淘宝
            if (!StringUtil.isNullOrEmpty(tbUserInfo.getTaoBaoUid())) {
                ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
                        ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, tbUserInfo.getTaoBaoUid());
                if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective())
                    throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
            }
            userInfo = getUserInfoByTaoBaoOpenId(appId, tbUserInfo.getOpenid());
            break;
        case 2:// 微信
@@ -349,12 +396,29 @@
            weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
            if (weiXinUser == null)
                throw new UserAccountException(1001, "无法获取到微信个人信息");
            // 判断是否被封禁
            ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService
                    .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
            if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective())
                throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
            userInfo = getUserInfoByWXUnionId(appId, weiXinUser.getUnionid());
            break;
        case 3:// 手机号码
                // 判断是否被封禁
            ForbiddenUserIdentifyCode identifyCode1 = forbiddenUserIdentifyCodeService
                    .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
            if (identifyCode1 != null && identifyCode1.getEffective() != null && identifyCode1.getEffective())
                throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
            userInfo = getUserInfoByPhone(appId, phone);
            break;
        }
        // 判断用户是否被删除
        if (userInfo != null && userInfo.getState() != null && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE
                || userInfo.getState() == UserInfo.STATE_DELETE))
            userInfo = null;
        if (userInfo != null) {
            UserInfo updateUserInfo = new UserInfo(userInfo.getId());
@@ -561,7 +625,19 @@
        if (StringUtil.isNullOrEmpty(unionId))
            throw new UserAccountException(2, "unionId为空");
        return userInfoMapper.getUserInfoByAppIdAndWXUnionId(appId, unionId);
        List<UserInfo> list = userInfoMapper.listByAppIdAndWXUnionId(appId, unionId);
        // 剔除被删除掉的用户
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getState() == UserInfo.STATE_DELETE
                    || list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) {
                list.remove(i);
                i--;
            }
        }
        if (list.size() > 0)
            return list.get(list.size() - 1);
        else
            return null;
    }
    /**
@@ -576,7 +652,21 @@
            throw new UserAccountException(1, "appId为空");
        if (StringUtil.isNullOrEmpty(openId))
            throw new UserAccountException(2, "openId为空");
        return userInfoMapper.getUserInfoByAppIdAndTaoBaoOpenId(appId, openId);
        List<UserInfo> list = userInfoMapper.listByAppIdAndTaoBaoOpenId(appId, openId);
        // 剔除被删除掉的用户
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getState() == UserInfo.STATE_DELETE
                    || list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) {
                list.remove(i);
                i--;
            }
        }
        if (list.size() > 0)
            return list.get(list.size() - 1);
        else
            return null;
    }
    /**
@@ -591,7 +681,21 @@
            throw new UserAccountException(1, "appId为空");
        if (StringUtil.isNullOrEmpty(phone))
            throw new UserAccountException(2, "phone为空");
        return userInfoMapper.getUserInfoByAppIdAndPhone(appId, phone);
        List<UserInfo> list = userInfoMapper.listByAppIdAndPhone(appId, phone);
        // 剔除被删除掉的用户
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getState() == UserInfo.STATE_DELETE
                    || list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) {
                list.remove(i);
                i--;
            }
        }
        if (list.size() > 0)
            return list.get(list.size() - 1);
        else
            return null;
    }
    private void updateLatestLoginTime(Long uid) {
@@ -705,7 +809,7 @@
        if (!StringUtil.isNullOrEmpty(user.getOpenid()) && !user.getOpenid().equalsIgnoreCase(tbOpenId))
            throw new UserAccountException(5, "当前账号已经绑定了淘宝,请先解绑");
        //绑定同一个淘宝号
        // 绑定同一个淘宝号
        if (!StringUtil.isNullOrEmpty(user.getOpenid()) && user.getOpenid().equalsIgnoreCase(tbOpenId))
            return;
@@ -748,7 +852,7 @@
        }
        userInfoMapper.updateByPrimaryKeySelective(update);
        userExtraTaoBaoInfoService.unBindUid(uid);
        userAccountMsgNotificationService.unBindingSuccess(uid, MsgAccountDetailFactory.TYPE_TB);
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java
@@ -622,7 +622,7 @@
    @Override
    public UserInfo getUserByIdWithMybatis(long uid) {
        UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
        UserInfo user = userInfoMapper.selectByPKey(uid);
        return UserUtil.filterForClientUser(user);
    }
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -25,6 +25,7 @@
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.log.TaoKeLogHelper;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
@@ -1595,6 +1596,7 @@
                    .optString("relation_id");
        } catch (TaoKeApiException e) {
            e.printStackTrace();
            LogHelper.error("渠道ID申请出错:" + resultJSON);
        }
        return null;
@@ -1617,6 +1619,7 @@
                    .optString("special_id");
        } catch (TaoKeApiException e) {
            e.printStackTrace();
            LogHelper.error("会员运营ID申请出错:" + resultJSON);
        }
        return null;
@@ -1797,6 +1800,26 @@
        return null;
    }
    public static void punish()
    {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.punish.order.get");
        map.put("span", "3600");
        map.put("page_no", "1");
        map.put("page_size", "20");
        map.put("start_time", "2019-01-01 00:00:00");
//        map.put("start_time", "2019-01-01 00:00:00");
        TaoKeAppInfo app = new TaoKeAppInfo();
        app.setAppKey(Constant.TAOBAO_AUTH_APPKEY);
        app.setAppSecret(Constant.TAOBAO_AUTH_APPSECRET);
        try {
            JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
        } catch (TaoKeApiException e) {
            e.printStackTrace();
        }
    }
    private static List<TaoBaoOrder> parseTaoBaoOrder(String response) {
@@ -1937,6 +1960,26 @@
        return null;
    }
    public static void juHuaSuan() {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.ju.items.search");
        map.put("current_page", 1 + "");
        map.put("page_size", 100+"");
        map.put("pid", "mm_124933865_43788020_381938426");
        TaoKeAppInfo app = new TaoKeAppInfo();
        app.setAppKey("24838852");
        app.setAppSecret("bc8265e2bf8d8115329d652f9d3d4cd8");
        try {
            JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
            System.out.println(json);
        } catch (TaoKeApiException e) {
            e.printStackTrace();
        }
    }
    // AA5ISJ
    private static TaoBaoGoodsBrief parseWuLiaoItemFromMaterialId(JSONObject item) {