From 5208a38ba080c322f0f0b6a01ac527ee30fe4204 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Tue, 25 Nov 2025 15:51:41 +0800
Subject: [PATCH] 新增税务信息

---
 trading-order-admin/src/main/java/com/yami/trading/admin/model/W8BENModel.java                    |   15 ++
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java          |   61 ++++++---
 trading-order-service/src/main/java/com/yami/trading/service/user/impl/W8BENServiceImpl.java      |   31 +++++
 trading-order-bean/src/main/java/com/yami/trading/bean/model/W8BEN.java                           |   48 ++++++++
 trading-order-service/src/main/java/com/yami/trading/service/user/W8BENService.java               |   14 ++
 trading-order-service/src/main/resources/mapper/user/UserW8BENMapper.xml                          |   18 +++
 trading-order-service/src/main/java/com/yami/trading/dao/user/W8BENMapper.java                    |   14 ++
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserW8BENController.java |   74 ++++++++++++
 trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/W8BENDto.java                     |   44 +++++++
 trading-order-service/src/main/resources/mapper/exchange/ExchangeApplyOrderMapper.xml             |    2 
 10 files changed, 298 insertions(+), 23 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserW8BENController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserW8BENController.java
new file mode 100644
index 0000000..3c4b684
--- /dev/null
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserW8BENController.java
@@ -0,0 +1,74 @@
+package com.yami.trading.admin.controller.user;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yami.trading.admin.model.*;
+import com.yami.trading.bean.model.*;
+import com.yami.trading.bean.user.dto.W8BENDto;
+import com.yami.trading.common.domain.Result;
+import com.yami.trading.service.user.W8BENService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RestController
+@CrossOrigin
+@RequestMapping("w8ben")
+@Api(tags = "用户税务信息管理")
+public class UserW8BENController {
+
+    @Autowired
+    W8BENService w8BENService;
+
+    @PostMapping("list")
+    @ApiOperation("列表")
+    public Result<Page<W8BENDto>> list(@RequestBody W8BENModel model) {
+        Page<W8BENDto> page = new Page(model.getCurrent(), model.getSize());
+        w8BENService.listUser(page, model.getUserName());
+        return Result.ok(page);
+    }
+
+    @PostMapping("update")
+    @ApiOperation("修改")
+    public Result update(@RequestBody W8BEN model) {
+        try {
+            w8BENService.updateById(model);
+            return Result.succeed(null);
+        } catch (Exception e) {
+            log.error("updateW8BEN error", e);
+            return Result.failed("失败");
+        }
+    }
+
+    @GetMapping("get")
+    @ApiOperation("获取单个")
+    public Result get(String uuid) {
+        try {
+            W8BEN w8BEN = w8BENService.getById(uuid);
+            return Result.succeed(w8BEN);
+        } catch (Exception e) {
+            log.error("getW8BEN error", e);
+            return Result.failed("失败");
+        }
+    }
+
+    @GetMapping("delete")
+    @ApiOperation("删除单个")
+    public Result delete(String uuid) {
+        try {
+            w8BENService.removeById(uuid);
+            return Result.succeed();
+        } catch (Exception e) {
+            log.error("deleteW8BEN error", e);
+            return Result.failed("失败");
+        }
+    }
+
+}
+
+
+
+
+
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/model/W8BENModel.java b/trading-order-admin/src/main/java/com/yami/trading/admin/model/W8BENModel.java
new file mode 100644
index 0000000..c0e5daf
--- /dev/null
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/model/W8BENModel.java
@@ -0,0 +1,15 @@
+package com.yami.trading.admin.model;
+
+import com.yami.trading.common.domain.PageRequest;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class W8BENModel extends PageRequest {
+
+    @ApiModelProperty("用户名")
+    private String userName;
+
+}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
index bfd4d27..946a3de 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
@@ -1,31 +1,18 @@
 package com.yami.trading.api.controller;
 
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yami.trading.api.dto.UserDto;
 import com.yami.trading.api.model.SetSafewordModel;
 import com.yami.trading.api.service.UserCacheService;
-import com.yami.trading.bean.model.HighLevelAuthRecord;
-import com.yami.trading.bean.model.Log;
-import com.yami.trading.bean.model.RealNameAuthRecord;
-import com.yami.trading.bean.model.User;
-import com.yami.trading.bean.model.UserRecom;
-import com.yami.trading.bean.model.UserSafewordApply;
+import com.yami.trading.bean.model.*;
 import com.yami.trading.bean.syspara.domain.Syspara;
 import com.yami.trading.common.constants.Constants;
 import com.yami.trading.common.domain.Result;
 import com.yami.trading.common.exception.BusinessException;
 import com.yami.trading.common.exception.YamiShopBindException;
-import com.yami.trading.common.util.DateUtils;
-import com.yami.trading.common.util.GoogleAuthenticator;
-import com.yami.trading.common.util.IPHelper;
-import com.yami.trading.common.util.ImageVerificationCodeUtil;
-import com.yami.trading.common.util.ImageVerificationEndecrypt;
-import com.yami.trading.common.util.IpUtil;
-import com.yami.trading.common.util.LockFilter;
-import com.yami.trading.common.util.RegexUtil;
-import com.yami.trading.common.util.StringUtils;
-import com.yami.trading.common.util.Strings;
-import com.yami.trading.common.util.UUIDGenerator;
+import com.yami.trading.common.util.*;
 import com.yami.trading.security.common.bo.UserInfoInTokenBO;
 import com.yami.trading.security.common.enums.SysTypeEnum;
 import com.yami.trading.security.common.manager.TokenStore;
@@ -41,6 +28,7 @@
 import com.yami.trading.service.user.UserRecomService;
 import com.yami.trading.service.user.UserSafewordApplyService;
 import com.yami.trading.service.user.UserService;
+import com.yami.trading.service.user.W8BENService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -48,14 +36,11 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
+import java.sql.Wrapper;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -97,6 +82,8 @@
     LogService logService;
     @Autowired
     QRGenerateService qrGenerateService;
+    @Autowired
+    W8BENService w8BENService;
 
     /**
      * 用户名登录接口
@@ -1040,4 +1027,34 @@
         return null;
     }
 
+    @GetMapping("getW8BENForm")
+    @ApiOperation("获取税务信息")
+    public Result getW8BENForm() {
+        try {
+            User user = userCacheService.currentUser();
+            W8BEN w8BEN = w8BENService.getOne(new LambdaQueryWrapper<W8BEN>().eq(W8BEN::getUserId, user.getUserId()));
+            return Result.succeed(w8BEN);
+        } catch (Exception e) {
+            log.error("getW8BENForm error", e);
+            return Result.failed("失败");
+        }
+    }
+
+    @PostMapping("setW8BENForm")
+    @ApiOperation("设置税务信息")
+    public Result setW8BENForm(W8BEN model) {
+        try {
+            User user = userCacheService.currentUser();
+            String userId = user.getUserId();
+            w8BENService.remove(new LambdaQueryWrapper<W8BEN>().eq(W8BEN::getUserId, user.getUserId()));
+            model.setUserId(userId);
+            model.setCreateTime(new Date());
+            w8BENService.saveOrUpdate(model);
+            return Result.succeed(null);
+        } catch (Exception e) {
+            log.error("setW8BENForm error", e);
+            return Result.failed("失败");
+        }
+    }
+
 }
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/model/W8BEN.java b/trading-order-bean/src/main/java/com/yami/trading/bean/model/W8BEN.java
new file mode 100644
index 0000000..4439e57
--- /dev/null
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/model/W8BEN.java
@@ -0,0 +1,48 @@
+package com.yami.trading.bean.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yami.trading.common.domain.UUIDEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 用户税务表信息
+ */
+
+@Data
+@TableName("tz_user_w8ben")
+public class W8BEN extends UUIDEntity {
+
+    private static final long serialVersionUID = 15254654818792589L;
+
+    private String userId;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("国籍")
+    private String citizenship;
+
+    @ApiModelProperty("居住地址")
+    private String address;
+
+    @ApiModelProperty("外国税号")
+    @TableField(value = "foreign_tin")
+    private String foreignTIN;
+
+    @ApiModelProperty("美国税号")
+    @TableField(value = "us_tin")
+    private String usTIN;
+
+    @ApiModelProperty("税收协定")
+    private String treatyBenefits;
+
+    @ApiModelProperty("提交时间")
+    private Date createTime;
+
+}
+
+
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/W8BENDto.java b/trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/W8BENDto.java
new file mode 100644
index 0000000..cd20db5
--- /dev/null
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/W8BENDto.java
@@ -0,0 +1,44 @@
+package com.yami.trading.bean.user.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel
+public class W8BENDto implements Serializable {
+
+    private String uuid;
+
+    private String userId;
+
+    @ApiModelProperty("用户名")
+    private String userName;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("国籍")
+    private String citizenship;
+
+    @ApiModelProperty("居住地址")
+    private String address;
+
+    @ApiModelProperty("外国税号")
+    private String foreignTIN;
+
+    @ApiModelProperty("美国税号")
+    private String usTIN;
+
+    @ApiModelProperty("税收协定")
+    private String treatyBenefits;
+
+    @ApiModelProperty("提交时间")
+    private String createTime;
+
+
+}
diff --git a/trading-order-service/src/main/java/com/yami/trading/dao/user/W8BENMapper.java b/trading-order-service/src/main/java/com/yami/trading/dao/user/W8BENMapper.java
new file mode 100644
index 0000000..96c765a
--- /dev/null
+++ b/trading-order-service/src/main/java/com/yami/trading/dao/user/W8BENMapper.java
@@ -0,0 +1,14 @@
+package com.yami.trading.dao.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yami.trading.bean.model.W8BEN;
+import com.yami.trading.bean.user.dto.W8BENDto;
+import org.apache.ibatis.annotations.Param;
+
+
+public interface W8BENMapper extends BaseMapper<W8BEN> {
+
+    Page<W8BENDto> listUser(Page page, @Param("userName") String userName);
+
+}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/user/W8BENService.java b/trading-order-service/src/main/java/com/yami/trading/service/user/W8BENService.java
new file mode 100644
index 0000000..10b921c
--- /dev/null
+++ b/trading-order-service/src/main/java/com/yami/trading/service/user/W8BENService.java
@@ -0,0 +1,14 @@
+package com.yami.trading.service.user;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yami.trading.bean.model.W8BEN;
+import com.yami.trading.bean.user.dto.W8BENDto;
+
+import java.util.List;
+
+public interface W8BENService extends IService<W8BEN> {
+
+    Page<W8BENDto> listUser(Page page, String userName);
+
+}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/user/impl/W8BENServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/user/impl/W8BENServiceImpl.java
new file mode 100644
index 0000000..4e0e2a3
--- /dev/null
+++ b/trading-order-service/src/main/java/com/yami/trading/service/user/impl/W8BENServiceImpl.java
@@ -0,0 +1,31 @@
+package com.yami.trading.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yami.trading.bean.model.User;
+import com.yami.trading.bean.model.W8BEN;
+import com.yami.trading.bean.user.dto.UserDto;
+import com.yami.trading.bean.user.dto.W8BENDto;
+import com.yami.trading.common.domain.Result;
+import com.yami.trading.dao.user.W8BENMapper;
+import com.yami.trading.service.user.W8BENService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class W8BENServiceImpl extends ServiceImpl<W8BENMapper, W8BEN> implements W8BENService {
+
+    @Autowired
+    private W8BENMapper w8BENMapper;
+
+    @Override
+    public Page<W8BENDto> listUser(Page page, String userName) {
+        try {
+            Page<W8BENDto> listUser = w8BENMapper.listUser(page,userName);
+            return listUser;
+        } catch (Exception e) {
+            log.error("setW8BENForm error", e);
+        }
+        return null;
+    }
+}
diff --git a/trading-order-service/src/main/resources/mapper/exchange/ExchangeApplyOrderMapper.xml b/trading-order-service/src/main/resources/mapper/exchange/ExchangeApplyOrderMapper.xml
index cb2b691..a699723 100644
--- a/trading-order-service/src/main/resources/mapper/exchange/ExchangeApplyOrderMapper.xml
+++ b/trading-order-service/src/main/resources/mapper/exchange/ExchangeApplyOrderMapper.xml
@@ -40,7 +40,7 @@
           and item.type=#{symbolType}
       </if>
       <if test="userName!=null and userName!=''">
-          and party.user_name=#{userName} or party.user_code=#{userName}
+          and (party.user_name=#{userName} or party.user_code=#{userName})
       </if>
       <if test="userCode!=null and userCode!=''">
           and party.user_code=#{userCode}
diff --git a/trading-order-service/src/main/resources/mapper/user/UserW8BENMapper.xml b/trading-order-service/src/main/resources/mapper/user/UserW8BENMapper.xml
new file mode 100644
index 0000000..c7fc59d
--- /dev/null
+++ b/trading-order-service/src/main/resources/mapper/user/UserW8BENMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yami.trading.dao.user.W8BENMapper">
+
+
+    <select id="listUser" resultType="com.yami.trading.bean.user.dto.W8BENDto">
+        SELECT w.*,u.user_name FROM `tz_user_w8ben` w
+        LEFT JOIN tz_user u ON u.user_id=w.user_id
+        where 1=1
+        <if test="userName!=null and userName!=''">
+            and u.user_name like CONCAT('%', #{userName}, '%')
+
+        </if>
+        order by w.create_time desc
+    </select>
+
+
+</mapper>

--
Gitblit v1.9.3