zyy
2025-11-27 95ac81a1e33c5d20a14010a90088c6017f217ac4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
 
package com.yami.trading.admin.controller.user;
 
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yami.trading.admin.controller.service.SysUserOperService;
import com.yami.trading.admin.controller.user.model.UserDataAddModel;
import com.yami.trading.admin.facade.PermissionFacade;
import com.yami.trading.admin.model.UpdateUserModel;
import com.yami.trading.admin.model.UserDataListModel;
import com.yami.trading.bean.model.Log;
import com.yami.trading.bean.model.User;
import com.yami.trading.bean.user.dto.UserDataDto;
import com.yami.trading.common.annotation.SysLog;
import com.yami.trading.common.constants.Constants;
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.YamiShopBindException;
import com.yami.trading.common.util.DateUtil;
import com.yami.trading.common.util.DateUtils;
import com.yami.trading.common.util.IPHelper;
import com.yami.trading.security.common.manager.PasswordManager;
import com.yami.trading.security.common.util.SecurityUtils;
import com.yami.trading.service.system.LogService;
import com.yami.trading.service.user.UserRecomService;
import com.yami.trading.service.user.UserService;
import com.yami.trading.sys.service.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.*;
 
import javax.validation.Valid;
import java.text.MessageFormat;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
@RestController
@CrossOrigin
@RequestMapping("userData")
@Api(tags = "用户基础数据")
public class UserDataController {
    @Autowired
    UserService userService;
    @Autowired
    SysUserService sysUserService;
    @Autowired
    PasswordManager passwordManager;
    @Autowired
    PasswordEncoder passwordEncoder;
 
    @Autowired
    UserRecomService userRecomService;
 
    @Autowired
    SysUserOperService sysUserOperService;
 
    @Autowired
    private PermissionFacade permissionFacade;
 
    @Autowired
    LogService logService;
 
    @PostMapping("list")
    @ApiOperation("列表")
    public Result<Page<UserDataDto>> list(@Valid @RequestBody UserDataListModel model) {
        List<String> roleNames = new ArrayList<>();
        if (StrUtil.isEmpty(model.getRolename())) {
            roleNames.add(Constants.SECURITY_ROLE_GUEST);
            roleNames.add(Constants.SECURITY_ROLE_MEMBER);
            roleNames.add(Constants.SECURITY_ROLE_TEST);
        } else {
            roleNames.add(model.getRolename());
        }
 
        Page<UserDataDto> page = new Page(model.getCurrent(), model.getSize());
        userService.listUserAndRecom(page, roleNames, model.getUserCode(), model.getUserName(), model.getLastIp(),
                permissionFacade.getOwnerUserIds(), model.getUserMail(), model.getUserMobile(), model.getRecomUserName());
        for (UserDataDto userDataDto : page.getRecords()) {
            userDataDto.setOnline(userService.isOnline(userDataDto.getUserId()));
//            userDataDto.setLoginAuthority(userDataDto.getStatus() == 1);
            userDataDto.setUserRegip(userDataDto.getUserLastip());
            userDataDto.setUserLevel(userDataDto.getUserLevel() / 10);
 
            if (userDataDto.getUserLasttime() != null) {
                String time = DateUtil.convertToZonedDateTime(userDataDto.getUserLasttime());
                Date toDate = DateUtil.stringToDate(time, "yyyy-MM-dd HH:mm:ss");
                userDataDto.setUserLasttime(toDate);
            }
            if (userDataDto.getCreateTime() != null) {
                String time = DateUtil.convertToZonedDateTime(userDataDto.getCreateTime());
                Date toDate = DateUtil.stringToDate(time, "yyyy-MM-dd HH:mm:ss");
                userDataDto.setCreateTime(toDate);
            }
        }
        return Result.ok(page);
    }
 
    @ApiOperation(value = "修改用户")
    @PostMapping("update")
    @SysLog("修改用户")
    public Result update(@Valid @RequestBody UpdateUserModel model) {
        User user = userService.getById(model.getUserId());
        if (user == null) {
            throw new YamiShopBindException("参数错误!");
        }
 
        boolean isLoginAuthority = user.isLoginAuthority();
        boolean isEnabled = user.isEnabled();
        boolean isWithdrawAuthority = user.isWithdrawAuthority();
        boolean isRealNameAuthority = user.isRealNameAuthority();
        String oldRemarks = user.getRemarks();
        int oldUserLevel = user.getUserLevel() / 10;
        user.setEnabled(model.isEnabled());
        user.setRemarks(model.getRemarks());
        user.setWithdrawAuthority(model.isWithdrawAuthority());
        user.setLoginAuthority(model.isLoginAuthority());
        Boolean realNameAuthority = model.getRealNameAuthority();
        if (realNameAuthority != null) {
            user.setRealNameAuthority(realNameAuthority);
        }
        if (model.getUserLevel() >= 0) {
            user.setUserLevel(model.getUserLevel() * 10 + user.getUserLevel() % 10);
        }
        double loanLimit = model.getLoanLimit();
        if (loanLimit >= 0) {
            user.setLoanLimit(loanLimit);
        }
        userService.updateById(user);
        String logtxt = MessageFormat.format(
                "ip:" + IPHelper.getIpAddr() + ",管理员手动修改了用户信息,用户名:{0},原登录权限:{1},原是否业务锁定:{2},原提现权限:{3},原基础认证:{4},原备注:{5},原信用分:{6},现登录权限:{7},现是否业务锁定:{8},现提现权限:{9},现基础认证:{10},现备注:{11},现信用分:{12}",
                user.getUserName(),
 
                isLoginAuthority,
                isEnabled,
                isWithdrawAuthority,
                isRealNameAuthority,
                oldRemarks,
                oldUserLevel,
 
                user.isLoginAuthority(),
                user.isEnabled(),
                user.isWithdrawAuthority(),
                user.isRealNameAuthority(),
                user.getRemarks(),
                user.getUserLevel() / 10);
        Log log = new Log();
        log.setCategory(Constants.LOG_CATEGORY_OPERATION);
        log.setUsername(user.getUserName());
        log.setOperator(SecurityUtils.getSysUser().getUsername());
        log.setUserId(user.getUserId());
        log.setLog(logtxt);
        logService.save(log);
        return Result.ok(null);
    }
 
    @ApiOperation(" 新增 演示账号")
    @PostMapping(value = "add")
    public Result add(@RequestBody @Valid UserDataAddModel request) {
        request.setPassword(passwordManager.decryptPassword(request.getPassword()));
        String username = request.getUsername().replace(" ", "");
        String password = request.getPassword().replace(" ", "");
        userService.saveUser(username, password, request.isLoginAuthority(), request.isEnabled(), request.getRemarks(), SecurityUtils.getSysUser().getUsername(), IPHelper.getIpAddr(), request.getParentsUseCode());
        return Result.succeed();
    }
}