上传工具类和服务层代码

main
R 4 months ago
parent 42c944d01a
commit 5626df6da9

@ -1,7 +1,10 @@
package com.jiudian.manage.service;
import com.jiudian.manage.model.Config;
//ConfigService是一个业务逻辑接口定义了系统配置相关的操作方法。它属于服务层
//定义配置管理的业务接口
//约束实现类必须提供的功能
//作为控制器Controller和数据访问层Mapper之间的桥梁
public interface ConfigService {
public Config get();
public boolean update(double managesalary,double staffsalary, double cleanerssalary, double manage, double staff, double cleaner, double totalmoney, double totalroom);

@ -3,7 +3,8 @@ package com.jiudian.manage.service;
import com.jiudian.manage.model.Order;
import java.util.List;
//接口包含了订单管理的完整功能:创建、删除、更新状态、查询
//将复杂的订单处理逻辑封装在 Service 层,控制器只需调用接口即可
public interface OrderService {
/**
*

@ -3,7 +3,7 @@ package com.jiudian.manage.service;
import com.jiudian.manage.model.Room;
import java.util.List;
//RoomService接口中的方法会调用RoomMapper接口中的方法
public interface RoomService {
/**
*

@ -3,7 +3,12 @@ package com.jiudian.manage.service;
import com.jiudian.manage.model.User;
import java.util.List;
/*UserService
ID
/
*/
public interface UserService {
public User selectUser(int userid);

@ -5,10 +5,14 @@ import com.jiudian.manage.model.Config;
import com.jiudian.manage.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
///**
// * ConfigService接口的实现类
// * 处理系统配置相关的业务逻辑
// */
@Service // 标记为服务层组件被Spring管理
public class ConfigServiceImpl implements ConfigService {
@Autowired
// 自动注入ConfigMapper用于数据库操作
ConfigMapper configMapper;
@Override
@ -18,14 +22,17 @@ public class ConfigServiceImpl implements ConfigService {
@Override
public boolean update(double managesalary, double staffsalary, double cleanerssalary, double manage, double staff, double cleaner, double totalmoney, double totalroom) {
//创建配置对象
Config config = new Config();
config.setId(1);
// 设置薪资相关配置
config.setManagesalary(managesalary);
config.setStaffsalary(staffsalary);
config.setCleanerssalary(cleanerssalary);
config.setManage(manage);
config.setStaff(staff);
config.setCleaner(cleaner);
//对于totalmoney和totalroom字段只有当传入值不是 - 1 时才更新
if(totalmoney!=-1){
config.setTotalmoney(totalmoney);
}
@ -33,6 +40,6 @@ public class ConfigServiceImpl implements ConfigService {
config.setTotalroom(totalroom);
}
int i = configMapper.updateByPrimaryKeySelective(config);
return i>0?true:false;
return i>0?true:false; //根据影响行数判断更新是否成功
}
}

@ -14,6 +14,9 @@ import org.springframework.stereotype.Service;
import java.util.List;
// * OrderService接口的实现类
// * 处理订单相关的业务逻辑
// */
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
@ -22,13 +25,27 @@ public class OrderServiceImpl implements OrderService {
RoomMapper roomMapper;
@Autowired
ConfigMapper configMapper;
// 自动注入相关Mapper
@Override
/**
*
*
*
* @param householdname
* @param id
* @param starttime
* @param endtime
* @param roomid ID
* @param userid ID
* @return truefalse
*/
public boolean addOrder(String householdname, String id, String starttime, String endtime, int roomid, int userid) {
// 1. 检查房间状态是否为可预订状态1
Room room = roomMapper.selectByPrimaryKey(roomid);
if(room.getState()!=1){
return false;
}
// 2. 创建订单对象
Order order = new Order();
order.setHouseholdname(householdname);
order.setId(id);
@ -37,15 +54,17 @@ public class OrderServiceImpl implements OrderService {
order.setRoomid(roomid);
order.setUserid(userid);
order.setState(0);
// 3. 计算订单金额
double money = TimeUtil.getBetweenDay(starttime,endtime)*room.getMoney();
order.setMoney(money);
// 4. 更新系统配置(总营业额和总房间数)
Config config = configMapper.selectByPrimaryKey(1);
config.setTotalroom(config.getTotalroom()+1);
config.setTotalmoney(config.getTotalmoney()+money);
configMapper.updateByPrimaryKeySelective(config);
// 5. 插入订单记录
int insert = orderMapper.insertSelective(order);
// 6. 如果订单插入成功更新房间状态为已入住状态2
if(insert>0){
Room room1 = new Room();
room1.setRoomid(roomid);
@ -60,7 +79,13 @@ public class OrderServiceImpl implements OrderService {
return false;
}
}
/**
*
*
*
* @param orderid ID
* @return truefalse
*/
@Override
public boolean delOrder(int orderid) {
Order order = orderMapper.selectByPrimaryKey(orderid);
@ -105,7 +130,14 @@ public class OrderServiceImpl implements OrderService {
}
return false;
}
/**
*
* 使PageHelper
*
* @param pageNum
* @param pageSize
* @return
*/
@Override
public List<Order> getAllOrder(int pageNum, int pageSize) {
PageHelper.startPage(pageNum,pageSize);

@ -8,9 +8,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
//这个RoomServiceImpl类实现了房间管理的完整业务逻辑包括
//房间的添加、删除、修改
//房间状态的单独更新
//基于状态和类型的组合查询
//分页查询支持
//代码遵循了面向接口编程的原则,通过依赖注入获取 Mapper 对象,实现了业务逻辑与数据访问的解耦,
//降低系统中不同组件之间的依赖关系,使它们能够独立地开发、测试和维护。
@Service
public class RoomServiceImpl implements RoomService {
// 自动注入RoomMapper用于数据库操作
@Autowired
RoomMapper roomMapper;

@ -9,8 +9,27 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
//UserServiceImpl是一个完整的用户管理服务实现类
//实现了 UserService 接口:提供了用户管理的所有功能
//使用 MyBatis 进行数据访问:通过 UserMapper 操作数据库
//1. 用户基础操作
//添加用户:创建新用户账号,自动生成工号
//删除用户:根据 ID 删除用户
//查询用户:根据 ID 查询用户详情
//更新用户:支持部分字段更新,灵活更新用户信息
//2. 用户信息管理
//修改个人信息:更新用户名、年龄、手机号等
//更新头像:上传和更新用户头像
//业绩管理:增加用户业绩 / 薪水记录
//3. 用户查询与筛选
//分页查询:支持分页获取所有用户
//权限筛选:按权限等级查询特定用户群体
//灵活查询:支持多条件组合查询
//4. 用户认证与授权
//登录验证:验证用户名密码,返回用户 ID 和权限
//权限管理:基于 power 字段实现用户权限控制
@Service
//实现UserService接口的所有方法
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;

@ -2,13 +2,20 @@ package com.jiudian.manage.until;
import java.io.File;
import java.io.FileOutputStream;
/**
*
*
* @return truefalse
* @throws Exception IO
*/
public class FileUtil {
public static boolean uploadFile(byte[] file, String filePath, String fileName) throws Exception {
// 创建目标文件夹
File targetFile = new File(filePath);
if(!targetFile.exists()){
targetFile.mkdirs();
}
//写入文件
FileOutputStream out = new FileOutputStream(filePath+fileName);
out.write(file);
out.flush();

@ -11,15 +11,19 @@ import java.util.Random;
public class ImageCode {
public static final String CODENAME="ImageCode";
//* 生成验证码图片并发送到客户端
public static void createImage(HttpServletResponse response, HttpSession session) throws IOException {
// 创建图像缓冲区
BufferedImage image = new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Random r = new Random();
// 设置背景色
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
g.fillRect(0, 0, 80, 20);
//获取生成的验证码
String code = getNumber();
//绑定验证码
// 将验证码存储到Session中
session.setAttribute(CODENAME, code);
g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 25));
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
@ -29,6 +33,10 @@ public class ImageCode {
OutputStream os = response.getOutputStream();
ImageIO.write(image, "jpeg", os);
}
/**
*
* @return 4
*/
public static String getNumber(){
String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String code = "";

@ -1,6 +1,18 @@
package com.jiudian.manage.until;
/**
*
*
* API
*/
public enum State {
/**
*
* "code""0"
*/
/**
*
* "message""成功"
*/
SuccessCode("code","0"),SuccessMessage("message","成功"),
ErrorCode("code","-1"),ErrorMessage("message","失败")
;
@ -8,6 +20,11 @@ public enum State {
public String name;
public String message;
/**
*
* @param name
* @param message
*/
State(String name,String message) {
this.name = name;
this.message = message;
@ -21,3 +38,8 @@ public enum State {
}
}
//状态码标记使用code="0"表示成功
//消息提示:使用 "成功" 作为提示信息
//返回值Service 方法返回 true 表示业务操作成功
//数据库影响:数据操作影响行数大于 0
//前端展示:用户界面显示成功反馈

@ -1,16 +1,30 @@
package com.jiudian.manage.until;
import java.util.HashMap;
//StateSignal类是一个响应结果构建器
//统一了 API 响应格式:所有接口返回包含状态码和消息的标准格式
public class StateSignal {
// 存储响应数据的HashMap
HashMap<String,Object> result = new HashMap<String,Object>();
/**
*
* @param state
*/
public void put(State state){
result.put(state.name,state.message);
}
/**
*
* @param name
* @param val
*/
public void put(String name,Object val){
result.put(name,val);
}
/**
*
* @return HashMap
*/
public HashMap<String, Object> getResult() {
return result;
}

@ -8,12 +8,13 @@ import java.util.GregorianCalendar;
public class TimeUtil {
/**
* date2-date1
* @param date1
* @param date2
* @return
* date2 - date1
* @param date1 yyyy-MM-dd
* @param date2 yyyy-MM-dd
* @return
*/
public static int getBetweenDay(String date1, String date2) {
// 将字符串日期转换为Calendar对象
Calendar d1 = new GregorianCalendar();
d1.setTime(formatterTime(date1));
Calendar d2 = new GregorianCalendar();
@ -28,7 +29,11 @@ public class TimeUtil {
}
return days;
}
/**
* Date
* @param date yyyy-MM-dd
* @return Datenull
*/
public static Date formatterTime(String date){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date newDate=null;

@ -2,6 +2,10 @@ package com.jiudian.manage.until;
import java.util.UUID;
/**
* UUID
* UUID
*/
public class UUIDUtil {
public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f",
"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
@ -17,9 +21,13 @@ public class UUIDUtil {
public static String generateShortUuid() {
StringBuffer shortBuffer = new StringBuffer();
String uuid = UUID.randomUUID().toString().replace("-", "");
// 将32位UUID转换为8位
for (int i = 0; i < 8; i++) {
// 每4个字符为一组
String str = uuid.substring(i * 4, i * 4 + 4);
// 转换为16进制整数
int x = Integer.parseInt(str, 16);
// 取模62字符集大小得到索引
shortBuffer.append(chars[x % 0x3E]);
}
return shortBuffer.toString();

Loading…
Cancel
Save