1
zj
yesterday befbf57e4112d07003bff18102f556a1e5a154de
trading-order-admin/src/main/java/com/yami/trading/admin/controller/trader/AdminTraderController.java
@@ -5,6 +5,7 @@
import com.yami.trading.admin.model.trader.TraderModel;
import com.yami.trading.bean.contract.domain.ContractOrder;
import com.yami.trading.bean.model.User;
import com.yami.trading.bean.trader.FollowCommissionType;
import com.yami.trading.bean.trader.domain.Trader;
import com.yami.trading.common.constants.Constants;
import com.yami.trading.common.domain.Result;
@@ -22,6 +23,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
@@ -55,6 +57,11 @@
               Double.parseDouble(data.get("deviation_profit_ratio").toString())), 100));
         data.put("profit_share_ratio",
               Arith.mul(Double.parseDouble(data.get("profit_share_ratio").toString()), 100));
         Object dailyPct = data.get("follow_commission_daily_pct");
         if (dailyPct != null && !"".equals(String.valueOf(dailyPct))) {
            data.put("follow_commission_daily_pct",
                  Arith.mul(Double.parseDouble(dailyPct.toString()), 100));
         }
         data.put("follower_now", Arith.add(Double.parseDouble(data.get("follower_now").toString()),
               Double.parseDouble(data.get("deviation_follower_now").toString())));
         data.put("follower_sum", Arith.add(Double.parseDouble(data.get("follower_sum").toString()),
@@ -125,7 +132,7 @@
      int follower_max = model.getFollowerMax();
      int follow_volumn_min = model.getFollowVolumnMin();
      double follow_volumn_min = model.getFollowVolumnMin();
      double week_3_profit = model.getWeek3Profit();
@@ -209,12 +216,21 @@
         trader.setDeviationFollowerSum(deviation_follower_sum);
         trader.setDeviationFollowerNow(deviation_follower_now);
         trader.setProfitShareRatio(Arith.div(profit_share_ratio, 100));
         trader.setState(state);
         trader.setFollowerMax(follower_max);
         trader.setCreateTime(sdf.parse(create_time));
         trader.setImg(img);
         trader.setFollowVolumnMin(follow_volumn_min);
         trader.setFollowVolumnMin(BigDecimal.valueOf(follow_volumn_min));
         bindTraderFollowCommissionFromModel(trader, model);
         if (FollowCommissionType.isLegacy(FollowCommissionType.normalizeOrLegacy(trader.getFollowCommissionType()))) {
            trader.setProfitShareRatio(Arith.div(profit_share_ratio, 100));
         } else {
            trader.setProfitShareRatio(0D);
         }
         String fcErr = validateFollowCommission(trader);
         if (!StringUtils.isNullOrEmpty(fcErr)) {
            throw new BusinessException(fcErr);
         }
         trader.setChecked(1);
         adminTraderService.save(trader);
@@ -296,6 +312,7 @@
      }
      trader.setProfitRatio(Arith.mul(trader.getProfitRatio(), 100));
      trader.setProfitShareRatio(Arith.mul(trader.getProfitShareRatio(), 100));
      trader.setFollowCommissionDailyPct(Arith.mul(trader.getFollowCommissionDailyPct(), 100));
      trader.setWeek3ProfitRatio(Arith.mul(trader.getWeek3ProfitRatio(), 100));
      trader.setDeviationProfitRatio(Arith.mul(trader.getDeviationWeek3ProfitRatio(), 100));
      trader.setDeviationProfitRatio(Arith.mul(trader.getDeviationProfitRatio(), 100));
@@ -394,7 +411,7 @@
      int follower_max = model.getFollowerMax();
      int follow_volumn_min = model.getFollowVolumnMin();
      double follow_volumn_min = model.getFollowVolumnMin();
      double week_3_profit = model.getWeek3Profit();
@@ -466,10 +483,20 @@
         trader.setState(state);
         trader.setFollowerMax(follower_max);
         trader.setProfitShareRatio(Arith.div(profit_share_ratio, 100));
         trader.setCreateTime(sdf.parse(create_time));
         trader.setImg(img);
         trader.setFollowVolumnMin(follow_volumn_min);
         trader.setFollowVolumnMin(BigDecimal.valueOf(follow_volumn_min));
         bindTraderFollowCommissionFromModel(trader, model);
         if (FollowCommissionType.isLegacy(FollowCommissionType.normalizeOrLegacy(trader.getFollowCommissionType()))) {
            trader.setProfitShareRatio(Arith.div(profit_share_ratio, 100));
         } else {
            trader.setProfitShareRatio(0D);
         }
         String fcErrUpdate = validateFollowCommission(trader);
         if (!StringUtils.isNullOrEmpty(fcErrUpdate)) {
            throw new BusinessException(fcErrUpdate);
         }
         adminTraderService.update(trader);
         return Result.succeed(null,"更新成功!");
@@ -489,6 +516,7 @@
   public Result check(HttpServletRequest request) {
      String id = request.getParameter("uuid");
      String check = request.getParameter("check");
      String reason = request.getParameter("reason");
      try {
         if(StringUtils.isEmptyString(check)) {
            return Result.failed("1","审核参数不能为空");
@@ -500,6 +528,12 @@
         if(Integer.parseInt(check) == trader.getChecked()) {
            return Result.failed("1","该记录审核状跟提交状态一致");
         }
         if(Integer.parseInt(check) == -1) {
            if(StringUtils.isEmptyString(reason)) {
               return Result.failed("1","驳回原因不能为空");
            }
            trader.setRemarks(reason);
         }
            trader.setChecked(Integer.parseInt(check));
         adminTraderService.update(trader);
         return Result.succeed(null,"审核成功!");
@@ -507,6 +541,33 @@
         return Result.failed("1", e.getMessage());
      } catch (Throwable t) {
         logger.error("update error ", t);
         return Result.failed("1", t.getMessage());
      }
   }
   @RequestMapping(action + "updateState.action")
   public Result updateState(HttpServletRequest request) {
      String id = request.getParameter("uuid");
      String state = request.getParameter("state");
      try {
         if (StringUtils.isEmptyString(id)) {
            return Result.failed("1", "交易员ID不能为空");
         }
         if (StringUtils.isEmptyString(state)) {
            return Result.failed("1", "带单状态不能为空");
         }
         if (!"0".equals(state) && !"1".equals(state) && !"2".equals(state)) {
            return Result.failed("1", "带单状态非法");
         }
         Trader trader = adminTraderService.findById(id);
         if (trader == null) {
            return Result.failed("1", "该记录不存在");
         }
         trader.setState(state);
         adminTraderService.update(trader);
         return Result.succeed(null, "带单状态更新成功");
      } catch (Throwable t) {
         logger.error("updateState error", t);
         return Result.failed("1", t.getMessage());
      }
   }
@@ -533,7 +594,7 @@
   private String verification(String name, String img, String create_time, String symbols, int order_profit, int deviation_order_profit, int order_loss
         , int deviation_order_loss, double week_3_order_amount, double deviation_week_3_order_amount, double week_3_order_profit, double deviation_week_3_order_profit,
         int week_3_order_sum, int deviation_week_3_order_sum, double order_amount, double deviation_order_amount, int follower_sum, int deviation_follower_sum,
         int follower_now, int deviation_follower_now, double profit_share_ratio, int follower_max, int follow_volumn_min) {
         int follower_now, int deviation_follower_now, double profit_share_ratio, int follower_max, double follow_volumn_min) {
      
      
      if (StringUtils.isEmptyString(name))
@@ -572,14 +633,52 @@
         return "当前跟随人数加偏差值不能小于0";
      if (profit_share_ratio < 0.0D)
         return "利润分成比例不能小于0";
      if (follower_max <= 0)
         return "此次跟单最多跟随人数不能小于等于0";
      if (StringUtils.isEmptyString(img))
         return "请上传头像";
      if (follower_max < Arith.add(follower_now, deviation_follower_now))
         return "此次跟单最多跟随人数不能小于当前跟随人数加偏差值";
      if (follow_volumn_min < 0)
         return "最小跟单张数不能小于0";
         return "最小跟单币数量不能小于0";
      return null;
   }
   private void bindTraderFollowCommissionFromModel(Trader trader, TraderModel model) {
      if (model.getFollowCommissionType() != null && !model.getFollowCommissionType().trim().isEmpty()) {
         trader.setFollowCommissionType(FollowCommissionType.normalizeOrLegacy(model.getFollowCommissionType()));
      } else if (trader.getFollowCommissionType() == null || trader.getFollowCommissionType().trim().isEmpty()) {
         trader.setFollowCommissionType(FollowCommissionType.LEGACY);
      }
      if (model.getFollowCommissionMonthlyAmount() != null) {
         trader.setFollowCommissionMonthlyAmount(model.getFollowCommissionMonthlyAmount());
      }
      if (model.getFollowCommissionDailyPct() != null) {
         trader.setFollowCommissionDailyPct(Arith.div(model.getFollowCommissionDailyPct(), 100));
      }
      if (FollowCommissionType.isLegacy(trader.getFollowCommissionType())) {
         trader.setFollowCommissionMonthlyAmount(BigDecimal.ZERO);
         trader.setFollowCommissionDailyPct(0);
      } else if (FollowCommissionType.isMonthlyFixed(trader.getFollowCommissionType())) {
         trader.setFollowCommissionDailyPct(0);
      } else if (FollowCommissionType.isDailyProfitPct(trader.getFollowCommissionType())) {
         trader.setFollowCommissionMonthlyAmount(BigDecimal.ZERO);
      }
   }
   private String validateFollowCommission(Trader t) {
      String ct = FollowCommissionType.normalizeOrLegacy(t.getFollowCommissionType());
      t.setFollowCommissionType(ct);
      if (FollowCommissionType.isMonthlyFixed(ct)) {
         if (t.getFollowCommissionMonthlyAmount() == null
               || t.getFollowCommissionMonthlyAmount().compareTo(BigDecimal.ZERO) <= 0) {
            return "月固定跟单费须大于0";
         }
      } else if (FollowCommissionType.isDailyProfitPct(ct)) {
         if (t.getFollowCommissionDailyPct() <= 0 || t.getFollowCommissionDailyPct() > 1) {
            return "按日总盈利提成比例须在0到100之间(按百分比填写)";
         }
      } else if (FollowCommissionType.isLegacy(ct)) {
         if (t.getProfitShareRatio() <= 0 || t.getProfitShareRatio() > 1) {
            return "单笔盈利分成比例须在0到100之间(表单按百分比填写)";
         }
      }
      return null;
   }