自学内容网 自学内容网

java抽奖系统(五)

7. 活动中心模块

活动管理页面见码云:

7.1 人员管理

        完善普通用户注册,成功之后跳转到人员列表页面。即完善一下注册界面的局部内容:

注册成功之后跳转到人员列表,数据库添加成功:

         人员列表页面的实现,前端代码见码云,后端实现步骤如下

7.1.1 时序图

7.1.2 前后端约定交互接口

请求路径后面的参数是身份,当传递admin时,只返回管理员的人员;但参数是normal时,只返回普通用户的信息,当没有参数传递的时候,就会返回所有的人员的信息;

controller层定义接口:

 @RequestMapping("/base-user/find-list")
    public CommonResult<List<BaseUserInfoResult>> findBaseUserInfo(String identity){
        logger.info("UserController findBaseUserInfo identity{}",identity);
        List<UserDTO> userDTOList = userService.findUserInfo(UserIdentityEnum.forName(identity));
        return CommonResult.success(convertToList(userDTOList));
    }

    private List<BaseUserInfoResult> convertToList(List<UserDTO> userDTOList) {
        if (CollectionUtils.isEmpty(userDTOList)) {
            return Arrays.asList();
//            Arrays.asList()构造一个空列表
        }
        return userDTOList.stream()
                .map(userDTO -> {
                    BaseUserInfoResult result = new BaseUserInfoResult();
                    result.setUserId(userDTO.getUserId());
                    result.setUserName(userDTO.getUserName());
                    result.setIdentity(userDTO.getIdentity().name());
                    return result;
                }).collect(Collectors.toList());
    }

service接口的定义和实现:

List<UserDTO> findUserInfo(UserIdentityEnum identity);

    @Override
    public List<UserDTO> findUserInfo(UserIdentityEnum identity) {
        //查数据库不能用枚举类去查,要先转成string
        String identityString = identity == null ? null : identity.name();
        //开始查表
        List<UserDO> userDOList = userMapper.selectUserListByIdentity(identityString);
//        dto是service往外controller传的对象,do是service从数据库中拿出来的数据
        List<UserDTO> userDTOList = userDOList.stream()
                .map(userDO -> {
                    UserDTO userDTO = new UserDTO();
                    userDTO.setUserId(userDO.getId());
                    userDTO.setUserName(userDO.getUserName());
                    userDTO.setEmail(userDO.getEmail());
                    userDTO.setPhoneNumber(userDO.getPhoneNumber().getValue());
                    userDTO.setIdentity(UserIdentityEnum.forName(userDO.getIdentity()));
                    return userDTO;
                }).collect(Collectors.toList());
//        collect(Collectors.toList());将map转化为list
        return userDTOList;
    }

dao层代码:

   @Select("<script> " +
            " select * from user <if test=\"identity!=null\">" +
            " where identity = #{identity}  </if>" +
            " order by id desc" +
            " </script>")
    List<UserDO> selectUserListByIdentity(@Param("identity")String identity);

 对用户进行降序排列,后创建的排在最上方:

空参测试结果如下:

完善人员列表的前端页面局部:

<script>
    var userToken = localStorage.getItem("user_token");

    var formData = new FormData();
    // 提交奖品数据的函数
    function submitPrizes() {
        var prizeName = $('#prizeName').val();
        var description = $('#description').val();
        var price = $('#price').val();
        formData.append("param", JSON.stringify({
            prizeName:prizeName,
            description:description,
            price:price,
        }));
        // 发送POST请求到后端接口
        $.ajax({
            url: '/prize/create',
            type: 'POST',
            // 不设置Content-Type请求头,因为数据将通过其他方式传递,例如通过FormData。
            contentType : false,
            // 不要处理发送的数据
            processData : false,
            headers: {
                // jwt
                "user_token": userToken
            },
            data: formData,
            success: function(result) {
                if(result.code == 200) {
                    alert('奖品创建成功!');
                } else {
                    alert('创建奖品失败:' + result.msg);
                }
            },
            error:function(err){
                console.log(err);
                if(err!=null && err.status==401){
                    alert("用户未登录, 即将跳转到登录页!");
                    // 跳转登录页
                    window.location.href = "/blogin.html";
                    window.parent.location.href = "/blogin.html";//让父页面一起跳转
                }
            }
        });
    }
    // 上传图片:读取用户通过文件输入选择的图片文件,并将其显示在一个网页元素中
    function showImg(){
        var file =  document.getElementById("prizeImageUrl").files[0];
        formData.append("prizePic",file);
        var r= new FileReader();
        result = r.readAsDataURL(file);
        r.onload=function (e) {
            console.log(e)
            $('#previewImg').attr("src", e.target.result).show();
        }
    }

</script>

测试如下:

人员列表页面实现;

ps:谢谢观看!!!


原文地址:https://blog.csdn.net/2202_76101487/article/details/144426323

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!