新版仿ok交易所-后端
zyy
2026-05-22 dc6abd25de0fc12e7a9de54f628f970c8fdc5910
trading-order-admin/src/main/java/com/yami/trading/admin/controller/finance/FinanceController.java
@@ -1,129 +1,161 @@
package com.yami.trading.admin.controller.finance;
import com.yami.trading.admin.model.LoginModel;
import com.yami.trading.bean.finance.Finance;
import com.yami.trading.bean.vo.FinanceVo;
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.YamiShopBindException;
import com.yami.trading.common.util.ConvertUtil;
import com.yami.trading.common.util.GoogleAuthenticator;
import com.yami.trading.security.common.bo.UserInfoInTokenBO;
import com.yami.trading.security.common.enums.SysTypeEnum;
import com.yami.trading.security.common.vo.TokenInfoVO;
import com.yami.trading.service.finance.FinanceService;
import com.yami.trading.sys.model.SysUser;
import com.yami.trading.util.ConverterUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import com.yami.trading.common.exception.BusinessException;
import com.yami.trading.common.util.StringUtils;
import com.yami.trading.common.web.ResultObject;
import com.yami.trading.service.finance.service.FinanceService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.Collections;
import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Map;
/**
 * @program: trading-order-master
 * @description: 理财
 * @create: 2025-01-22 17:13
 **/
 * 理财产品
 *
 */
@RestController
@RequestMapping("finance")
@Api(tags = "理财")
@Slf4j
@CrossOrigin
public class FinanceController {
   private Logger logger = LogManager.getLogger(FinanceController.class);
    @Autowired
    FinanceService service;
   protected FinanceService financeService;
    @PostMapping("/add")
    @ApiOperation(value = "理财-添加")
    public Result<?> login(@Valid @RequestBody FinanceVo vo) {
        Finance finance = ConverterUtil.convert(vo, Finance.class);
        service.save(finance);
        return Result.ok("添加成功");
   private final String action = "/api/finance!";
   /**
    * 理财产品列表
    */
   @RequestMapping(action + "list.action")
   public Object list() {
      ResultObject resultObject = new ResultObject();
      try {
         List<Finance> data = this.financeService.findAllState_1();
         resultObject.setData(bulidData(data));
         resultObject.setCode("0");
      } catch (BusinessException e) {
         resultObject.setCode("1");
         resultObject.setMsg(e.getMessage());
      } catch (Throwable t) {
         resultObject.setCode("1");
         resultObject.setMsg("程序错误");
         logger.error("error:", t);
      }
      return resultObject;
    }
    /**
     * 修改理财
    * 理财产品详情
     */
    @PutMapping("/update/{id}")
    @ApiOperation(value = "理财-修改")
    public Result<?> updateFinance(@PathVariable Long id, @Valid @RequestBody FinanceVo vo) {
        // 查询该理财产品是否被用户持有
//        boolean isHeldByUsers = userFinanceService.isFinanceHeldByUsers(id);
//        if (isHeldByUsers) {
//            return Result.failed("该理财产品已被用户持有,无法修改");
//        }
   @RequestMapping(action + "get.action")
   public Object get(HttpServletRequest request) {
      String id = request.getParameter("id");
        // 如果没有用户持有,继续进行修改操作
        return Optional.ofNullable(service.getById(id))
                .map(finance -> {
                    finance.setName(vo.getName());
                    finance.setName_en(vo.getName_en());
                    finance.setName_cn(vo.getName_cn());
                    finance.setName_kn(vo.getName_kn());
                    finance.setName_jn(vo.getName_jn());
                    finance.setImg(vo.getImg());
                    finance.setCycle(vo.getCycle());
                    finance.setDaily_rate(vo.getDaily_rate());
                    finance.setDaily_rate_max(vo.getDaily_rate_max());
                    finance.setToday_rate(vo.getToday_rate());
                    finance.setDefault_ratio(vo.getDefault_ratio());
                    finance.setInvestment_min(vo.getInvestment_min());
                    finance.setInvestment_max(vo.getInvestment_max());
                    finance.setState(vo.getState());
                    finance.setBuyCurrency(vo.getBuyCurrency());
                    finance.setOutputCurrency(vo.getOutputCurrency());
      ResultObject resultObject = new ResultObject();
                    service.save(finance);
                    return Result.ok("修改成功");
                })
                .orElseGet(() -> Result.failed("理财信息不存在"));
      try {
         Finance data = this.financeService.findById(id);
         if (!StringUtils.isNullOrEmpty(data.getImg())) {
            String path = data.getImg();
            data.setImg(path);
    }
         resultObject.setData(data);
         resultObject.setCode("0");
    /**
     * 删除理财
     */
    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "理财-删除")
    public Result<?> deleteFinance(@PathVariable Long id) {
        boolean removed = service.removeById(id);
        if (removed) {
            // 查询该理财产品是否被用户持有
//        boolean isHeldByUsers = userFinanceService.isFinanceHeldByUsers(id);
//        if (isHeldByUsers) {
//            return Result.failed("该理财产品已被用户持有,无法删除");
//        }
            return Result.ok("删除成功");
        } else {
            return Result.failed("理财信息不存在");
        }
      } catch (BusinessException e) {
         resultObject.setCode("1");
         resultObject.setMsg(e.getMessage());
      } catch (Throwable t) {
         resultObject.setCode("1");
         resultObject.setMsg("程序错误");
         logger.error("error:", t);
    }
    /**
     * 查询单个理财
     */
    @GetMapping("/find/{id}")
    @ApiOperation(value = "理财-查询")
    public Result<?> getFinance(@PathVariable Long id) {
        return Optional.ofNullable(service.getById(id))
                .map(Result::ok)
                .orElseGet(() -> Result.failed("理财信息不存在"));
      return resultObject;
    }
    /**
     * 查询所有理财
     */
    @GetMapping("/list")
    @ApiOperation(value = "理财-查询所有")
    public Result<?> getAllFinances() {
        List<Finance> finances = service.list();
        return Result.ok(finances.isEmpty() ? Collections.emptyList() : finances);
   protected List<Map<String, Object>> bulidData(List<Finance> finances) throws ParseException {
      List<Map<String, Object>> result_finances = new ArrayList<Map<String, Object>>();
      for (int i = 0; i < finances.size(); i++) {
         Map<String, Object> map = new HashMap<String, Object>();
         Finance finance = finances.get(i);
         System.out.println(finance);
         String path = finance.getImg();
         map.put("img", path);
         map.put("id", finance.getUuid());
         map.put("name", finance.getName());
         map.put("name_en", finance.getNameEn());
         map.put("name_cn", finance.getNameCn());
         map.put("name_kn", finance.getNameKn());
         map.put("name_jn", finance.getNameJn());
         map.put("cycle", finance.getCycle());
         map.put("daily_rate", finance.getDailyRate() + " ~ " + finance.getDailyRateMax());
         map.put("daily_rate_max", finance.getDailyRateMax());
         map.put("today_rate", finance.getTodayRate());
         map.put("default_ratio", finance.getDefaultRatio());
         map.put("investment_min", finance.getInvestmentMin());
         map.put("investment_max", finance.getInvestmentMax());
         map.put("state", finance.getState());
         map.put("buyCurrency", finance.getBuyCurrency());
         map.put("outputCurrency", finance.getOutputCurrency());
         result_finances.add(map);
    }
      return result_finances;
   }
   private Map<String, Object> bulidData(Finance finance) throws ParseException {
      Map<String, Object> map = new HashMap<String, Object>();
      String path = finance.getImg();
      map.put("img", path);
      map.put("id", finance.getUuid());
      map.put("name", finance.getName());
      map.put("name_en", finance.getNameEn());
      map.put("name_cn", finance.getNameCn());
      map.put("name_kn", finance.getNameKn());
      map.put("name_jn", finance.getNameJn());
      map.put("cycle", finance.getCycle());
      map.put("daily_rate", finance.getDailyRate());
      map.put("daily_rate_max", finance.getDailyRateMax());
      map.put("today_rate", finance.getTodayRate());
      map.put("default_ratio", finance.getDefaultRatio());
      map.put("investment_min", finance.getInvestmentMin());
      map.put("investment_max", finance.getInvestmentMax());
      map.put("state", finance.getState());
      map.put("buyCurrency", finance.getBuyCurrency());
      map.put("outputCurrency", finance.getOutputCurrency());
      return map;
   }
}