atcrowdfunding-manager

com.itliupengcheng.atcrowdfunding.controller

package com.atguigu.atcrowdfunding.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.atguigu.atcrowdfunding.bean.AJAXResult;
import com.atguigu.atcrowdfunding.bean.Permission;
import com.atguigu.atcrowdfunding.service.PermissionService;

@Controller
@RequestMapping("/permission")
public class PermissionController {

    @Autowired
    private PermissionService permissionService;

    @ResponseBody
    @RequestMapping("/delete")
    public Object delete( Permission permission ) {
        AJAXResult result = new AJAXResult();
        
        try {
            permissionService.deletePermission(permission);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @ResponseBody
    @RequestMapping("/update")
    public Object update( Permission permission ) {
        AJAXResult result = new AJAXResult();
        
        try {
            permissionService.updatePermission(permission);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @ResponseBody
    @RequestMapping("/insert")
    public Object insert( Permission permission ) {
        AJAXResult result = new AJAXResult();
        
        try {
            permissionService.insertPermission(permission);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }

    @RequestMapping("/add")
    public String add() {
        return "permission/add";
    }
    
    @RequestMapping("/edit")
    public String edit( Integer id, Model model ) {
        
        Permission permission = permissionService.queryById(id);
        model.addAttribute("permission", permission);
        
        return "permission/edit";
    }
    
    @RequestMapping("/index")
    public String index() {
        return "permission/index";
    }
    
    
    @ResponseBody
    @RequestMapping("/loadAssignData")
    public Object loadAssignData( Integer roleid ) {
        List<Permission> permissions = new ArrayList<Permission>();
        List<Permission> ps = permissionService.queryAll();
        
        // 鑾峰彇褰撳墠瑙掕壊宸茬粡鍒嗛厤鐨勮鍙俊鎭�
        List<Integer> permissionids = permissionService.queryPermissionidsByRoleid(roleid);
        
        Map<Integer, Permission> permissionMap = new HashMap<Integer, Permission>();
        for (Permission p : ps) {
            if ( permissionids.contains(p.getId()) ) {
                p.setChecked(true);
            } else {
                p.setChecked(false);
            }
            permissionMap.put(p.getId(), p);
        }
        for ( Permission p : ps ) {
            Permission child = p;
            if ( child.getPid() == 0 ) {
                permissions.add(p);
            } else {
                Permission parent = permissionMap.get(child.getPid());
                parent.getChildren().add(child);
            }
        }
        
        return permissions;
    }
    
    @ResponseBody
    @RequestMapping("/loadData")
    public Object loadData() {
        List<Permission> permissions = new ArrayList<Permission>();
        
//        Permission root = new Permission();
//        root.setName("椤剁骇鑺傜偣");
//        
//        Permission child = new Permission();
//        child.setName("瀛愯妭鐐�");
//        
//        root.getChildren().add(child);
//        permissions.add(root);
        
        // 璇诲彇鏍戝舰缁撴瀯鏁版嵁
        /*
        Permission root = permissionService.queryRootPermission();        
        
        List<Permission> childPermissions = permissionService.queryChildPermissions(root.getId());
        
        for ( Permission childPermission : childPermissions ) {
            List<Permission> childChildPermissions = permissionService.queryChildPermissions(childPermission.getId());
            childPermission.setChildren(childChildPermissions);
        }
        
        root.setChildren(childPermissions);
        
        permissions.add(root);
        */
        
        // 閫掑綊鏌ヨ鏁版嵁
        /*
        Permission parent = new Permission();
        parent.setId(0);
        queryChildPermissions(parent);
        //permissions.
        return parent.getChildren();
        */
        
        // 鏌ヨ鎵�鏈夌殑璁稿彲鏁版嵁
        List<Permission> ps = permissionService.queryAll();
        
        /*
        for ( Permission p : ps ) {
            // 瀛愯妭鐐�
            Permission child = p;
            if ( p.getPid() == 0 ) {
                permissions.add(p);
            } else {
                for ( Permission innerPermission : ps ) {
                    if ( child.getPid().equals(innerPermission.getId()) ) {
                        // 鐖惰妭鐐�
                        Permission parent = innerPermission;
                        // 缁勫悎鐖跺瓙鑺傜偣鐨勫叧绯�
                        parent.getChildren().add(child);
                        break;
                    }
                }
            }
        }
        */
        
        Map<Integer, Permission> permissionMap = new HashMap<Integer, Permission>();
        for (Permission p : ps) {
            permissionMap.put(p.getId(), p);
        }
        for ( Permission p : ps ) {
            Permission child = p;
            if ( child.getPid() == 0 ) {
                permissions.add(p);
            } else {
                Permission parent = permissionMap.get(child.getPid());
                parent.getChildren().add(child);
            }
        }
        
        return permissions;
    }
    
    /**
     */
    private void queryChildPermissions( Permission parent ) {
        List<Permission> childPermissions = permissionService.queryChildPermissions(parent.getId());
        
        for ( Permission permission : childPermissions ) {
            queryChildPermissions(permission);
        }
        
        parent.setChildren(childPermissions);
    }
}
PermissionConyroller.java
package com.atguigu.atcrowdfunding.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.atguigu.atcrowdfunding.bean.AJAXResult;
import com.atguigu.atcrowdfunding.bean.Page;
import com.atguigu.atcrowdfunding.bean.Role;
import com.atguigu.atcrowdfunding.service.RoleService;

@Controller
@RequestMapping("/role")
public class RoleController {

    @Autowired
    private RoleService roleService;
    
    @ResponseBody
    @RequestMapping("/pageQuery")
    public Object pageQuery( String queryText, Integer pageno, Integer pagesize ) {
        
        AJAXResult result = new AJAXResult();
        
        try {
            
            // 
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("start", (pageno-1)*pagesize);
            map.put("size", pagesize);
            map.put("queryText", queryText);
            
            List<Role> roles = roleService.pageQueryData( map );
            
            int totalsize = roleService.pageQueryCount( map );
            //
            int totalno = 0;
            if ( totalsize % pagesize == 0 ) {
                totalno = totalsize / pagesize;
            } else {
                totalno = totalsize / pagesize + 1;
            }
            
            // 
            Page<Role> rolePage = new Page<Role>();
            rolePage.setDatas(roles);
            rolePage.setTotalno(totalno);
            rolePage.setTotalsize(totalsize);
            rolePage.setPageno(pageno);
            
            result.setData(rolePage);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
        
    }

    @ResponseBody
    @RequestMapping("/doAssign")
    public Object doAssign( Integer roleid, Integer[] permissionids ) {
        AJAXResult result = new AJAXResult();
        
        try {
            
            Map<String, Object> paramMap = new HashMap<String, Object>();
            paramMap.put("roleid", roleid);
            paramMap.put("permissionids", permissionids);
            roleService.insertRolePermission(paramMap);
            
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @RequestMapping("/assign")
    public String assign() {
        return "role/assign";
    }
    
    @RequestMapping("/index")
    public String index() {
        return "role/index";
    }
}
RoleController.java
package com.atguigu.atcrowdfunding.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.atguigu.atcrowdfunding.bean.AJAXResult;
import com.atguigu.atcrowdfunding.bean.Page;
import com.atguigu.atcrowdfunding.bean.Role;
import com.atguigu.atcrowdfunding.bean.User;
import com.atguigu.atcrowdfunding.service.RoleService;
import com.atguigu.atcrowdfunding.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;
    @Autowired
    private RoleService roleService;
    
    @ResponseBody
    @RequestMapping("/deletes")
    public Object deletes( Integer[] userid ) {
        AJAXResult result = new AJAXResult();
        
        try {
            
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("userids", userid);
            userService.deleteUsers(map);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @ResponseBody
    @RequestMapping("/delete")
    public Object delete( Integer id ) {
        AJAXResult result = new AJAXResult();
        
        try {
            
            userService.deleteUserById(id);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @ResponseBody
    @RequestMapping("/update")
    public Object update( User user ) {
        AJAXResult result = new AJAXResult();
        
        try {
            
            userService.updateUser(user);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @RequestMapping("/edit")
    public String edit( Integer id, Model model ) {
        
        User user = userService.queryById(id);
        model.addAttribute("user", user);
        
        return "user/edit";
    }
    
    @RequestMapping("/assign")
    public String assign( Integer id, Model model ) {
        
        User user = userService.queryById(id);
        model.addAttribute("user", user);
        
        List<Role> roles = roleService.queryAll();
        
        List<Role> assingedRoles = new ArrayList<Role>();
        List<Role> unassignRoles = new ArrayList<Role>();
        
        // 鑾峰彇鍏崇郴琛ㄧ殑鏁版嵁
        List<Integer> roleids = userService.queryRoleidsByUserid(id);
        for ( Role role : roles ) {
            if ( roleids.contains(role.getId()) ) {
                assingedRoles.add(role);
            } else {
                unassignRoles.add(role);
            }
        }
        
        model.addAttribute("assingedRoles", assingedRoles);
        model.addAttribute("unassignRoles", unassignRoles);
        
        return "user/assign";
    }
    
    
    @ResponseBody
    @RequestMapping("/doAssign")
    public Object doAssign( Integer userid, Integer[] unassignroleids ) {
        AJAXResult result = new AJAXResult();
        
        try {
            // 澧炲姞鍏崇郴琛ㄦ暟鎹�
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("userid", userid);
            map.put("roleids", unassignroleids);
            userService.insertUserRoles(map);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @ResponseBody
    @RequestMapping("/dounAssign")
    public Object dounAssign( Integer userid, Integer[] assignroleids ) {
        AJAXResult result = new AJAXResult();
        
        try {
            // 鍒犻櫎鍏崇郴琛ㄦ暟鎹�
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("userid", userid);
            map.put("roleids", assignroleids);
            userService.deleteUserRoles(map);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @ResponseBody
    @RequestMapping("/insert")
    public Object insert( User user ) {
        AJAXResult result = new AJAXResult();
        
        try {
            
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            user.setCreatetime(sdf.format(new Date()));
            user.setUserpswd("123456");
            userService.insertUser(user);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
    }
    
    @RequestMapping("/add")
    public String add() {
        return "user/add";
    }
    
    @ResponseBody
    @RequestMapping("/pageQuery")
    public Object pageQuery( String queryText, Integer pageno, Integer pagesize ) {
        
        AJAXResult result = new AJAXResult();
        
        try {
            
            // 鍒嗛〉鏌ヨ
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("start", (pageno-1)*pagesize);
            map.put("size", pagesize);
            map.put("queryText", queryText);
            
            List<User> users = userService.pageQueryData( map );
            // 褰撳墠椤电爜            
            // 鎬荤殑鏁版嵁鏉℃暟
            int totalsize = userService.pageQueryCount( map );
            // 鏈�澶ч〉鐮侊紙鎬婚〉鐮侊級
            int totalno = 0;
            if ( totalsize % pagesize == 0 ) {
                totalno = totalsize / pagesize;
            } else {
                totalno = totalsize / pagesize + 1;
            }
            
            // 鍒嗛〉瀵硅薄
            Page<User> userPage = new Page<User>();
            userPage.setDatas(users);
            userPage.setTotalno(totalno);
            userPage.setTotalsize(totalsize);
            userPage.setPageno(pageno);
            
            result.setData(userPage);
            result.setSuccess(true);
        } catch ( Exception e ) {
            e.printStackTrace();
            result.setSuccess(false);
        }
        
        return result;
        
    }
    
    @RequestMapping("/index")
    public String index() {
        return "user/index";
    }
    /**
     * 鐢ㄦ埛棣栭〉
     * @return
     */
    @RequestMapping("/index1")
    public String index1( @RequestParam(required=false, defaultValue="1")Integer pageno, @RequestParam(required=false, defaultValue="2")Integer pagesize, Model model ) {
        
        // 鍒嗛〉鏌ヨ
        // limit start, size
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("start", (pageno-1)*pagesize);
        map.put("size", pagesize);
        
        List<User> users = userService.pageQueryData( map );
        model.addAttribute("users", users);
        // 褰撳墠椤电爜
        model.addAttribute("pageno", pageno);
        
        // 鎬荤殑鏁版嵁鏉℃暟
        int totalsize = userService.pageQueryCount( map );
        // 鏈�澶ч〉鐮侊紙鎬婚〉鐮侊級
        int totalno = 0;
        if ( totalsize % pagesize == 0 ) {
            totalno = totalsize / pagesize;
        } else {
            totalno = totalsize / pagesize + 1;
        }
        model.addAttribute("totalno", totalno);
        
        return "user/index";
    }
}
UserController.java

com..itliupengcheng.atcrowdfunding.dao

package com.atguigu.atcrowdfunding.dao;

import java.util.List;

import org.apache.ibatis.annotations.Select;

import com.atguigu.atcrowdfunding.bean.Permission;
import com.atguigu.atcrowdfunding.bean.User;

public interface PermissionDao {

    @Select("select * from t_permission where pid is null")
    Permission queryRootPermission();

    @Select("select * from t_permission where pid = #{pid}")
    List<Permission> queryChildPermissions(Integer pid);

    @Select("select * from t_permission")
    List<Permission> queryAll();

    void insertPermission(Permission permission);

    @Select("select * from t_permission where id = #{id}")
    Permission queryById(Integer id);

    void updatePermission(Permission permission);

    void deletePermission(Permission permission);

    @Select("select permissionid from t_role_permission where roleid = #{roleid}")
    List<Integer> queryPermissionidsByRoleid(Integer roleid);

    List<Permission> queryPermissionsByUser(User dbUser);

}
PermissionDao.java
package com.atguigu.atcrowdfunding.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Select;

import com.atguigu.atcrowdfunding.bean.Role;

public interface RoleDao {

    List<Role> pageQueryData(Map<String, Object> map);

    int pageQueryCount(Map<String, Object> map);

    @Select("select * from t_role")
    List<Role> queryAll();

    void insertRolePermission(Map<String, Object> paramMap);

    void deleteRolePermissions(Map<String, Object> paramMap);

}
RoleDao.java
package com.atguigu.atcrowdfunding.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Select;

import com.atguigu.atcrowdfunding.bean.User;

public interface UserDao {

    @Select("select * from t_user")
    List<User> queryAll();

    @Select("select * from t_user where loginacct = #{loginacct} and userpswd = #{userpswd}")
    User query4Login(User user);

    List<User> pageQueryData(Map<String, Object> map);

    int pageQueryCount(Map<String, Object> map);

    void insertUser(User user);

    @Select("select * from t_user where id = #{id}")
    User queryById(Integer id);

    void updateUser(User user);

    void deleteUserById(Integer id);

    void deleteUsers(Map<String, Object> map);

    void insertUserRoles(Map<String, Object> map);

    void deleteUserRoles(Map<String, Object> map);

    @Select("select roleid from t_user_role where userid = #{userid}")
    List<Integer> queryRoleidsByUserid(Integer id);

}
UserDao.java

com.itliupengcheng.atcrowdfunding.servise

package com.atguigu.atcrowdfunding.service;

import java.util.List;

import com.atguigu.atcrowdfunding.bean.Permission;
import com.atguigu.atcrowdfunding.bean.User;

public interface PermissionService {

    Permission queryRootPermission();

    List<Permission> queryChildPermissions(Integer pid);

    List<Permission> queryAll();

    void insertPermission(Permission permission);

    Permission queryById(Integer id);

    void updatePermission(Permission permission);

    void deletePermission(Permission permission);

    List<Integer> queryPermissionidsByRoleid(Integer roleid);

    List<Permission> queryPermissionsByUser(User dbUser);

}
PermissionService.java
package com.atguigu.atcrowdfunding.service;

import java.util.List;
import java.util.Map;

import com.atguigu.atcrowdfunding.bean.Role;

public interface RoleService {
    List<Role> pageQueryData(Map<String, Object> map);

    int pageQueryCount(Map<String, Object> map);

    List<Role> queryAll();

    void insertRolePermission(Map<String, Object> paramMap);


}
RoleService
package com.atguigu.atcrowdfunding.service;

import java.util.List;
import java.util.Map;

import com.atguigu.atcrowdfunding.bean.User;

public interface UserService {

    List<User> queryAll();

    User query4Login(User user);

    List<User> pageQueryData(Map<String, Object> map);

    int pageQueryCount(Map<String, Object> map);

    void insertUser(User user);

    User queryById(Integer id);

    void updateUser(User user);

    void deleteUserById(Integer id);

    void deleteUsers(Map<String, Object> map);

    void deleteUserRoles(Map<String, Object> map);

    void insertUserRoles(Map<String, Object> map);

    List<Integer> queryRoleidsByUserid(Integer id);

}
UserService

 com.itliupengcheng.atcrowdfunding.servise.impl

package com.atguigu.atcrowdfunding.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.atguigu.atcrowdfunding.bean.Permission;
import com.atguigu.atcrowdfunding.bean.User;
import com.atguigu.atcrowdfunding.dao.PermissionDao;
import com.atguigu.atcrowdfunding.service.PermissionService;

@Service
public class PermissionServiceImpl implements PermissionService {

    @Autowired
    private PermissionDao permissionDao;

    public Permission queryRootPermission() {
        return permissionDao.queryRootPermission();
    }

    public List<Permission> queryChildPermissions(Integer pid) {
        return permissionDao.queryChildPermissions(pid);
    }

    public List<Permission> queryAll() {
        return permissionDao.queryAll();
    }

    public void insertPermission(Permission permission) {
        permissionDao.insertPermission(permission);
    }

    public Permission queryById(Integer id) {
        return permissionDao.queryById(id);
    }

    public void updatePermission(Permission permission) {
        permissionDao.updatePermission(permission);
    }

    public void deletePermission(Permission permission) {
        permissionDao.deletePermission(permission);
    }

    public List<Integer> queryPermissionidsByRoleid(Integer roleid) {
        return permissionDao.queryPermissionidsByRoleid(roleid);
    }

    public List<Permission> queryPermissionsByUser(User dbUser) {
        return permissionDao.queryPermissionsByUser(dbUser);
    }
}
PermissionServiceImpl.java
package com.atguigu.atcrowdfunding.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.atguigu.atcrowdfunding.bean.Role;
import com.atguigu.atcrowdfunding.dao.RoleDao;
import com.atguigu.atcrowdfunding.service.RoleService;

@Service
public class RoleServiceImpl implements RoleService {

    @Autowired
    private RoleDao roleDao;


    public List<Role> pageQueryData(Map<String, Object> map) {
        return roleDao.pageQueryData(map);
    }

    public int pageQueryCount(Map<String, Object> map) {
        return roleDao.pageQueryCount(map);
    }

    public List<Role> queryAll() {
        return roleDao.queryAll();
    }

    public void insertRolePermission(Map<String, Object> paramMap) {
        roleDao.deleteRolePermissions(paramMap);
        roleDao.insertRolePermission(paramMap);
    }

}
RoleServiceImpl.java
package com.atguigu.atcrowdfunding.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.atguigu.atcrowdfunding.bean.User;
import com.atguigu.atcrowdfunding.dao.UserDao;
import com.atguigu.atcrowdfunding.service.UserService;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    public List<User> queryAll() {
        return userDao.queryAll();
    }

    public User query4Login(User user) {
        return userDao.query4Login(user);
    }

    public List<User> pageQueryData(Map<String, Object> map) {
        return userDao.pageQueryData(map);
    }

    public int pageQueryCount(Map<String, Object> map) {
        return userDao.pageQueryCount(map);
    }

    public void insertUser(User user) {
        userDao.insertUser(user);
    }

    public User queryById(Integer id) {
        return userDao.queryById(id);
    }

    public void updateUser(User user) {
        userDao.updateUser(user);
    }

    public void deleteUserById(Integer id) {
        userDao.deleteUserById(id);
    }

    public void deleteUsers(Map<String, Object> map) {
        userDao.deleteUsers(map);
    }

    public void deleteUserRoles(Map<String, Object> map) {
        userDao.deleteUserRoles(map);
    }

    public void insertUserRoles(Map<String, Object> map) {
        userDao.insertUserRoles(map);
    }

    public List<Integer> queryRoleidsByUserid(Integer id) {
        return userDao.queryRoleidsByUserid(id);
    }
}
UserServiceImpl.java

 

转载于:https://www.cnblogs.com/liupengcheng0707/p/10963682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值