Compare commits
88 Commits
Binary file not shown.
Binary file not shown.
@ -0,0 +1,381 @@
|
|||||||
|
package com.example.flower.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.example.flower.entity.Staff;
|
||||||
|
import com.example.flower.service.StaffService;
|
||||||
|
import com.example.flower.unit.JWTUtil;
|
||||||
|
import com.example.flower.unit.MenuList;
|
||||||
|
import io.jsonwebtoken.Claims;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/staff")
|
||||||
|
public class StaffController {
|
||||||
|
@Resource
|
||||||
|
private StaffService staffService;
|
||||||
|
|
||||||
|
@PostMapping("/getByToken") //通过token获取账号信息
|
||||||
|
public JSONObject getStaffByToken(@RequestHeader String Authorization){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
Claims claims = JWTUtil.getBodyByToken(Authorization);
|
||||||
|
int staff_id = (int) claims.get("id");
|
||||||
|
|
||||||
|
Staff staff = staffService.staffInfo(staff_id);
|
||||||
|
|
||||||
|
if(staff!=null){
|
||||||
|
JSONObject jsonObject1 = new JSONObject();
|
||||||
|
jsonObject1.put("staff_id",staff.getStaff_id());
|
||||||
|
jsonObject1.put("staff_name",staff.getStaff_name());
|
||||||
|
jsonObject1.put("staff_role",staff.getStaff_role());
|
||||||
|
jsonObject1.put("staff_pic",staff.getStaff_pic());
|
||||||
|
|
||||||
|
jsonObject.put("code",200);
|
||||||
|
jsonObject.put("msg","成功");
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403);
|
||||||
|
jsonObject.put("msg","获取员工信息失败");
|
||||||
|
jsonObject.put("data",null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/login") //staffLogin员工后台登录
|
||||||
|
public JSONObject staffLogin(@RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
Staff staff = staffService.staffLogin(param.getString("staff_name"));
|
||||||
|
//根据用户名没有查到用户
|
||||||
|
if(staff==null){
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg"," 用户名不存在" );
|
||||||
|
jsonObject.put("token",null);
|
||||||
|
jsonObject.put("data",null); //菜单信息
|
||||||
|
}
|
||||||
|
else if (staff.getStaff_state()==0) { //账号为禁用状态
|
||||||
|
jsonObject.put("code",403);
|
||||||
|
jsonObject.put("msg","账号禁用,请联系管理员" );
|
||||||
|
jsonObject.put("token",null);
|
||||||
|
jsonObject.put("data",null); //菜单信息
|
||||||
|
}
|
||||||
|
//密码验证,创建token
|
||||||
|
else if(staff.getStaff_pwd().equals(param.getString("staff_pwd"))){
|
||||||
|
String token = JWTUtil.createToken(staff.getStaff_id(),staff.getStaff_role());
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","登录成功" );
|
||||||
|
jsonObject.put("token",token);
|
||||||
|
|
||||||
|
JSONObject jsonObject1 = new JSONObject(); //放menu
|
||||||
|
JSONObject[] menuList = new JSONObject[0];
|
||||||
|
|
||||||
|
if(staff.getStaff_role()==1){ //店长可以获得所有菜单的权限
|
||||||
|
menuList = new JSONObject[8];
|
||||||
|
MenuList.setMenu(menuList, 1);
|
||||||
|
}
|
||||||
|
else if(staff.getStaff_role()==0){ //员工菜单
|
||||||
|
menuList = new JSONObject[7];
|
||||||
|
MenuList.setMenu(menuList, 0);
|
||||||
|
}
|
||||||
|
jsonObject1.put("menu",menuList);
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg"," 密码错误" );
|
||||||
|
jsonObject.put("token",null);
|
||||||
|
jsonObject.put("data",null); //菜单信息
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/list") //staffList获取所有用户信息列表
|
||||||
|
public JSONObject staffList(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject jsonObject1 = new JSONObject();
|
||||||
|
int page=param.getIntValue("page");
|
||||||
|
int page_size=param.getIntValue("page_size");
|
||||||
|
|
||||||
|
List<Staff> staffList = staffService.staffList(page,page_size).getList();
|
||||||
|
|
||||||
|
jsonObject1.put("page_number",staffService.staffList(page,page_size).getPages());
|
||||||
|
jsonObject1.put("total",staffService.staffList(page,page_size).getTotal());
|
||||||
|
|
||||||
|
int size=staffList.size();
|
||||||
|
|
||||||
|
JSONObject[] objects = new JSONObject[size];
|
||||||
|
for(int i = 0;i<size;i++){
|
||||||
|
objects[i]=new JSONObject();
|
||||||
|
objects[i].put("staff_id", staffList.get(i).getStaff_id());
|
||||||
|
objects[i].put("staff_name", staffList.get(i).getStaff_name());
|
||||||
|
objects[i].put("staff_pwd", staffList.get(i).getStaff_pwd());
|
||||||
|
objects[i].put("staff_full_name",staffList.get(i).getStaff_full_name());
|
||||||
|
objects[i].put("staff_phone", staffList.get(i).getStaff_phone());
|
||||||
|
objects[i].put("staff_state", staffList.get(i).getStaff_state());
|
||||||
|
objects[i].put("staff_role", staffList.get(i).getStaff_role());
|
||||||
|
objects[i].put("staff_pic",staffList.get(i).getStaff_pic());
|
||||||
|
|
||||||
|
}
|
||||||
|
jsonObject1.put("staffs",objects);
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","token认证成功!" );
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/query") //staffListByQuery查询用户信息列表
|
||||||
|
public JSONObject staffListByQuery(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject jsonObject1 = new JSONObject();
|
||||||
|
int page=param.getIntValue("page");
|
||||||
|
int page_size=param.getIntValue("page_size");
|
||||||
|
String staff_name = param.getString("staff_name");
|
||||||
|
|
||||||
|
List<Staff> staffList = staffService.staffListByQuery(page,page_size,staff_name).getList();
|
||||||
|
|
||||||
|
jsonObject1.put("page_number",staffService.staffListByQuery(page,page_size,staff_name).getPages());
|
||||||
|
jsonObject1.put("total",staffService.staffListByQuery(page,page_size,staff_name).getTotal());
|
||||||
|
|
||||||
|
int size=staffList.size();
|
||||||
|
|
||||||
|
JSONObject[] objects = new JSONObject[size];
|
||||||
|
for(int i = 0;i<size;i++){
|
||||||
|
objects[i]=new JSONObject();
|
||||||
|
objects[i].put("staff_id", staffList.get(i).getStaff_id());
|
||||||
|
objects[i].put("staff_name", staffList.get(i).getStaff_name());
|
||||||
|
objects[i].put("staff_pwd", staffList.get(i).getStaff_pwd());
|
||||||
|
objects[i].put("staff_full_name",staffList.get(i).getStaff_full_name());
|
||||||
|
objects[i].put("staff_phone", staffList.get(i).getStaff_phone());
|
||||||
|
objects[i].put("staff_state", staffList.get(i).getStaff_state());
|
||||||
|
objects[i].put("staff_role", staffList.get(i).getStaff_role());
|
||||||
|
objects[i].put("staff_pic",staffList.get(i).getStaff_pic());
|
||||||
|
|
||||||
|
}
|
||||||
|
jsonObject1.put("staffs",objects);
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","token认证成功!" );
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/add") //staffAdd添加新员工
|
||||||
|
public JSONObject staffAdd(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
Staff staff = new Staff();
|
||||||
|
staff.setStaff_name(param.getString("staff_name"));
|
||||||
|
staff.setStaff_pwd(param.getString("staff_pwd"));
|
||||||
|
staff.setStaff_full_name(param.getString("staff_full_name"));
|
||||||
|
staff.setStaff_phone(param.getString("staff_phone"));
|
||||||
|
staff.setStaff_role(param.getIntValue("staff_role"));
|
||||||
|
staff.setStaff_state(param.getIntValue("staff_state"));
|
||||||
|
staff.setStaff_pic(param.getString("staff_pic"));
|
||||||
|
|
||||||
|
staffService.staffAdd(staff);
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","成功" );
|
||||||
|
jsonObject.put("staff_id",staff.getStaff_id());
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/deletePer") //staffDeletePer删除单个员工
|
||||||
|
public JSONObject staffDeletePer(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
int flag = staffService.staffDeletePer(param.getIntValue("staff_id"));
|
||||||
|
if(flag==1){
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","成功" );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","删除失败" );
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/deleteMul") //staffDeleteMul批量删除员工
|
||||||
|
public JSONObject staffDeleteMul(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取请求参数
|
||||||
|
JSONArray staff_ids = param.getJSONArray("staff_ids");
|
||||||
|
|
||||||
|
int [] ids = new int[staff_ids.size()];
|
||||||
|
|
||||||
|
//把userid中的数据进行类型转换并存入到int数组中
|
||||||
|
for (int i = 0; i < staff_ids.size(); i++) {
|
||||||
|
ids[i] = Integer.parseInt(staff_ids.getString(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
int result = staffService.staffDeleteMul(ids);
|
||||||
|
if(result == ids.length){
|
||||||
|
jsonObject.put("code",200);
|
||||||
|
jsonObject.put("msg","批量删除成功,删除了"+result+"条员工数据");
|
||||||
|
}else{
|
||||||
|
jsonObject.put("code",403);
|
||||||
|
jsonObject.put("msg","批量删除失败,删除了"+result+"条员工数据");
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/info") //staffInfo获取员工信息
|
||||||
|
public JSONObject staffInfo(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
int staff_id = param.getIntValue("staff_id");
|
||||||
|
Staff staff = staffService.staffInfo(staff_id);
|
||||||
|
|
||||||
|
if(staff!=null){
|
||||||
|
JSONObject jsonObject1 = new JSONObject();
|
||||||
|
jsonObject1.put("staff_id",staff.getStaff_id());
|
||||||
|
jsonObject1.put("staff_name",staff.getStaff_name());
|
||||||
|
jsonObject1.put("staff_pwd",staff.getStaff_pwd());
|
||||||
|
jsonObject1.put("staff_full_name",staff.getStaff_full_name());
|
||||||
|
jsonObject1.put("staff_phone",staff.getStaff_phone());
|
||||||
|
jsonObject1.put("staff_state",staff.getStaff_state());
|
||||||
|
jsonObject1.put("staff_role",staff.getStaff_role());
|
||||||
|
jsonObject1.put("staff_pic",staff.getStaff_pic());
|
||||||
|
|
||||||
|
jsonObject.put("code",200);
|
||||||
|
jsonObject.put("msg","成功");
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403);
|
||||||
|
jsonObject.put("msg","获取员工信息失败");
|
||||||
|
jsonObject.put("data",null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/modify") //staffModify修改员工信息
|
||||||
|
public JSONObject staffModify(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
Staff staff = new Staff();
|
||||||
|
staff.setStaff_id(param.getIntValue("staff_id"));
|
||||||
|
staff.setStaff_name(param.getString("staff_name"));
|
||||||
|
staff.setStaff_pwd(param.getString("staff_pwd"));
|
||||||
|
staff.setStaff_full_name(param.getString("staff_full_name"));
|
||||||
|
staff.setStaff_phone(param.getString("staff_phone"));
|
||||||
|
staff.setStaff_role(param.getIntValue("staff_role"));
|
||||||
|
staff.setStaff_state(param.getIntValue("staff_state"));
|
||||||
|
staff.setStaff_pic(param.getString("staff_pic"));
|
||||||
|
|
||||||
|
int flag = staffService.staffModify(staff);
|
||||||
|
if(flag==1){
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","修改成功" );
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","修改失败" );
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/modifyState") //staffModifyState修改单个员工信息
|
||||||
|
public JSONObject staffModifyState(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
int staff_id = param.getIntValue("staff_id");
|
||||||
|
|
||||||
|
Staff staff = staffService.staffInfo(staff_id);
|
||||||
|
if(staff==null){
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","员工不存在" );
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
int staff_state = staff.getStaff_state();
|
||||||
|
int state_modify = -1;
|
||||||
|
|
||||||
|
if(staff_state==0) state_modify=1;
|
||||||
|
else if (staff_state==1) state_modify=0;
|
||||||
|
|
||||||
|
if(state_modify==-1){
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","员工状态错误" );
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
int flag = staffService.staffModifyState(staff_id,state_modify);
|
||||||
|
|
||||||
|
if(flag==1){
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","状态修改成功" );
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","状态修改失败" );
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
package com.example.flower.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.example.flower.unit.JWTUtil;
|
||||||
|
import io.jsonwebtoken.Claims;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/upload")
|
||||||
|
public class UploadController {
|
||||||
|
|
||||||
|
@Value("${web.upload-path}")
|
||||||
|
String uploadPath;
|
||||||
|
//上传图片
|
||||||
|
@PostMapping("")
|
||||||
|
public JSONObject upload(@RequestHeader String Authorization,@RequestParam("file") MultipartFile file){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
Claims body= JWTUtil.getBodyByToken(Authorization);
|
||||||
|
int id = (int) body.get("id");
|
||||||
|
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
try {
|
||||||
|
File rootDir = new File(uploadPath);
|
||||||
|
if(!rootDir.exists()){
|
||||||
|
rootDir.mkdir();
|
||||||
|
}
|
||||||
|
File userDir = new File(uploadPath+"/"+id);
|
||||||
|
if(!userDir.exists()){
|
||||||
|
userDir.mkdir();
|
||||||
|
}
|
||||||
|
String dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
|
||||||
|
String type = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
|
||||||
|
File addFile = new File(userDir,dateFormat + type);
|
||||||
|
OutputStream outputStream = Files.newOutputStream(addFile.toPath());
|
||||||
|
outputStream.write(file.getBytes());
|
||||||
|
|
||||||
|
jsonObject.put("code",200);
|
||||||
|
jsonObject.put("msg","成功");
|
||||||
|
|
||||||
|
json.put("url","/"+id+ "/" + dateFormat + type);
|
||||||
|
|
||||||
|
jsonObject.put("data",json);
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
jsonObject.put("code",403);
|
||||||
|
jsonObject.put("msg","失败");
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,386 @@
|
|||||||
|
package com.example.flower.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.example.flower.entity.User;
|
||||||
|
import com.example.flower.service.UserService;
|
||||||
|
import com.example.flower.unit.JWTUtil;
|
||||||
|
import io.jsonwebtoken.Claims;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/user")
|
||||||
|
public class UserController {
|
||||||
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
|
//后台
|
||||||
|
@PostMapping("/list") //userList获取所有用户信息列表
|
||||||
|
public JSONObject userList(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject jsonObject1 = new JSONObject();
|
||||||
|
int page=param.getIntValue("page");
|
||||||
|
int page_size=param.getIntValue("page_size");
|
||||||
|
|
||||||
|
List<User> userList = userService.userList(page,page_size).getList();
|
||||||
|
|
||||||
|
jsonObject1.put("page_number",userService.userList(page,page_size).getPages());
|
||||||
|
jsonObject1.put("total",userService.userList(page,page_size).getTotal());
|
||||||
|
|
||||||
|
int size=userList.size();
|
||||||
|
|
||||||
|
JSONObject[] objects = new JSONObject[size];
|
||||||
|
for(int i = 0;i<size;i++){
|
||||||
|
objects[i]=new JSONObject();
|
||||||
|
objects[i].put("user_id", userList.get(i).getUser_id());
|
||||||
|
objects[i].put("user_name", userList.get(i).getUser_name());
|
||||||
|
objects[i].put("user_pwd", userList.get(i).getUser_pwd());
|
||||||
|
objects[i].put("user_phone", userList.get(i).getUser_phone());
|
||||||
|
objects[i].put("user_state", userList.get(i).getUser_state());
|
||||||
|
objects[i].put("user_role", userList.get(i).getUser_role());
|
||||||
|
if(userList.get(i).getUser_role() == 1) //是会员则返回会员日期
|
||||||
|
objects[i].put("member_time",userList.get(i).getMember_end_time());
|
||||||
|
else
|
||||||
|
objects[i].put("member_time","--");
|
||||||
|
objects[i].put("user_pic",userList.get(i).getUser_pic());
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","token认证成功!" );
|
||||||
|
jsonObject1.put("users",objects);
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/query") //userListByQuery查询用户信息列表
|
||||||
|
public JSONObject userListByQuery(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject jsonObject1 = new JSONObject();
|
||||||
|
int page=param.getIntValue("page");
|
||||||
|
int page_size=param.getIntValue("page_size");
|
||||||
|
String user_name = param.getString("user_name");
|
||||||
|
|
||||||
|
List<User> userList = userService.userListByQuery(page,page_size,user_name).getList();
|
||||||
|
|
||||||
|
int page_number=userService.userListByQuery(page,page_size,user_name).getPages();
|
||||||
|
jsonObject1.put("page_number",page_number);
|
||||||
|
jsonObject1.put("total",userService.userListByQuery(page,page_size,user_name).getTotal());
|
||||||
|
|
||||||
|
int size=userList.size();
|
||||||
|
|
||||||
|
JSONObject[] objects = new JSONObject[size];
|
||||||
|
for(int i = 0;i<size;i++){
|
||||||
|
objects[i]=new JSONObject();
|
||||||
|
objects[i].put("user_id", userList.get(i).getUser_id());
|
||||||
|
objects[i].put("user_name", userList.get(i).getUser_name());
|
||||||
|
objects[i].put("user_pwd", userList.get(i).getUser_pwd());
|
||||||
|
objects[i].put("user_phone", userList.get(i).getUser_phone());
|
||||||
|
objects[i].put("user_state", userList.get(i).getUser_state());
|
||||||
|
objects[i].put("user_role", userList.get(i).getUser_role());
|
||||||
|
if(userList.get(i).getUser_role() == 1) //是会员则返回会员日期
|
||||||
|
objects[i].put("member_time",userList.get(i).getMember_end_time());
|
||||||
|
else
|
||||||
|
objects[i].put("member_time","--");
|
||||||
|
objects[i].put("user_pic",userList.get(i).getUser_pic());
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","成功" );
|
||||||
|
jsonObject1.put("users",objects);
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/deletePer") //userDeletePer删除单个用户
|
||||||
|
public JSONObject userDeletePer(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
int flag = userService.userDeletePer(param.getIntValue("user_id"));
|
||||||
|
if(flag==1){
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","成功" );
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","删除失败" );
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/deleteMul") //userDeleteMul批量删除用户
|
||||||
|
public JSONObject userDeleteMul(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取请求参数
|
||||||
|
JSONArray user_ids = param.getJSONArray("user_ids");
|
||||||
|
|
||||||
|
int [] ids = new int[user_ids.size()];
|
||||||
|
|
||||||
|
//把userid中的数据进行类型转换并存入到int数组中
|
||||||
|
for (int i = 0; i < user_ids.size(); i++) {
|
||||||
|
ids[i] = Integer.parseInt(user_ids.getString(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
int result = userService.userDeleteMul(ids);
|
||||||
|
if(result == ids.length){
|
||||||
|
jsonObject.put("code",200);
|
||||||
|
jsonObject.put("msg","批量删除成功,删除了"+result+"条用户数据");
|
||||||
|
}else{
|
||||||
|
jsonObject.put("code",403);
|
||||||
|
jsonObject.put("msg","批量删除失败,删除了"+result+"条用户数据");
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/modifyState") //userModifyState修改单个用户状态
|
||||||
|
public JSONObject userModifyState(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
int user_id = param.getIntValue("user_id");
|
||||||
|
|
||||||
|
User user = userService.userInfo(user_id);
|
||||||
|
if(user==null){
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","用户不存在" );
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
int user_state = user.getUser_state();
|
||||||
|
int state_modify = -1;
|
||||||
|
|
||||||
|
if(user_state==0) state_modify=1;
|
||||||
|
else if (user_state==1) state_modify=0;
|
||||||
|
|
||||||
|
if(state_modify==-1){
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","用户状态错误" );
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
int flag = userService.userModifyState(user_id,state_modify);
|
||||||
|
if(flag==1){
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","状态修改成功" );
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","状态修改失败" );
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
//前台
|
||||||
|
@PostMapping("/getByToken") //通过token获取用户账号信息
|
||||||
|
public JSONObject getStaffByToken(@RequestHeader String Authorization){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
Claims claims = JWTUtil.getBodyByToken(Authorization);
|
||||||
|
int user_id = (int) claims.get("id");
|
||||||
|
|
||||||
|
User user = userService.userInfo(user_id);
|
||||||
|
|
||||||
|
if(user!=null){
|
||||||
|
JSONObject jsonObject1 = new JSONObject();
|
||||||
|
jsonObject1.put("user_id",user.getUser_id());
|
||||||
|
jsonObject1.put("user_name",user.getUser_name());
|
||||||
|
jsonObject1.put("user_role",user.getUser_role());
|
||||||
|
jsonObject1.put("user_pic",user.getUser_pic());
|
||||||
|
jsonObject1.put("member_point",user.getMember_point());
|
||||||
|
|
||||||
|
jsonObject.put("code",200);
|
||||||
|
jsonObject.put("msg","成功");
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403);
|
||||||
|
jsonObject.put("msg","获取用户信息失败");
|
||||||
|
jsonObject.put("data",null);
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/login") //userLogin用户登录
|
||||||
|
public JSONObject staffLogin(@RequestBody JSONObject param) throws ParseException {
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
User user = userService.userLogin(param.getString("user_name"));
|
||||||
|
//根据用户名没有查到用户
|
||||||
|
if(user==null){
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg"," 用户名不存在" );
|
||||||
|
jsonObject.put("token",null);
|
||||||
|
}
|
||||||
|
else if (user.getUser_state()==0) { //账号为禁用状态
|
||||||
|
jsonObject.put("code",403);
|
||||||
|
jsonObject.put("msg","账号禁用,请联系客服" );
|
||||||
|
jsonObject.put("token",null);
|
||||||
|
}
|
||||||
|
|
||||||
|
//密码验证,创建token
|
||||||
|
else if(user.getUser_pwd().equals(param.getString("user_pwd"))){
|
||||||
|
// 验证用户会员身份是否过期
|
||||||
|
if(user.getUser_role() == 1){
|
||||||
|
System.out.println(user.getUser_role());
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 格式化
|
||||||
|
Date date = new Date();
|
||||||
|
String date_now = sdf.format(date); //当前时间
|
||||||
|
|
||||||
|
Date date1 = sdf.parse(user.getMember_end_time());
|
||||||
|
Date date2 = sdf.parse(date_now);
|
||||||
|
boolean before = date1.before(date2);
|
||||||
|
|
||||||
|
if(before) { //当前用户会员过期
|
||||||
|
user.setUser_role(0);
|
||||||
|
userService.userModify(user);
|
||||||
|
System.out.println(user.getUser_role());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String token = JWTUtil.createToken(user.getUser_id(),user.getUser_role());
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg"," 登录成功,欢迎来到好花!" );
|
||||||
|
jsonObject.put("token",token);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg"," 密码错误" );
|
||||||
|
jsonObject.put("token",null);
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/register") //userRegister用户注册
|
||||||
|
public JSONObject userAdd(@RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(userService.findByName(param.getString("user_name")) != null){
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","该用户名已被占用" );
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.setUser_name(param.getString("user_name"));
|
||||||
|
user.setUser_pwd(param.getString("user_pwd"));
|
||||||
|
user.setUser_role(0);
|
||||||
|
user.setUser_state(1);
|
||||||
|
user.setUser_phone("");
|
||||||
|
user.setUser_pic("");
|
||||||
|
|
||||||
|
userService.userRegister(user);
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","注册成功!" );
|
||||||
|
jsonObject.put("user_id",user.getUser_id());
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/info") //useInfo获取用户信息
|
||||||
|
public JSONObject useInfo(@RequestHeader String Authorization){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
Claims claims = JWTUtil.getBodyByToken(Authorization);
|
||||||
|
int user_id = (int) claims.get("id");
|
||||||
|
User user = userService.userInfo(user_id);
|
||||||
|
|
||||||
|
if(user!=null){
|
||||||
|
JSONObject jsonObject1 = new JSONObject();
|
||||||
|
jsonObject1.put("user_id",user.getUser_id());
|
||||||
|
jsonObject1.put("user_name",user.getUser_name());
|
||||||
|
jsonObject1.put("user_pwd",user.getUser_pwd());
|
||||||
|
jsonObject1.put("user_role",user.getUser_role());
|
||||||
|
jsonObject1.put("user_phone",user.getUser_phone());
|
||||||
|
jsonObject1.put("user_pic",user.getUser_pic());
|
||||||
|
jsonObject1.put("member_end_time",user.getMember_end_time());
|
||||||
|
jsonObject1.put("member_point",user.getMember_point());
|
||||||
|
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","成功" );
|
||||||
|
jsonObject.put("data",jsonObject1);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","获取用户信息失败" );
|
||||||
|
jsonObject.put("data",null);
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/modify") //userModify修改用户信息
|
||||||
|
public JSONObject userModify(@RequestHeader String Authorization, @RequestBody JSONObject param){
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
if(!JWTUtil.checkToken(Authorization)){ //token认证失败
|
||||||
|
JWTUtil.checkTokenFailed(jsonObject);
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
Claims claims = JWTUtil.getBodyByToken(Authorization);
|
||||||
|
int user_id = (int) claims.get("id");
|
||||||
|
User user = new User();
|
||||||
|
user.setUser_id(user_id);
|
||||||
|
user.setUser_name(param.getString("user_name"));
|
||||||
|
user.setUser_pwd(param.getString("user_pwd"));
|
||||||
|
user.setUser_phone(param.getString("user_phone"));
|
||||||
|
user.setUser_pic(param.getString("user_pic"));
|
||||||
|
user.setUser_state(1);
|
||||||
|
|
||||||
|
int flag = userService.userModify(user);
|
||||||
|
if(flag==1){
|
||||||
|
jsonObject.put("code",200 );
|
||||||
|
jsonObject.put("msg","修改成功" );
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonObject.put("code",403 );
|
||||||
|
jsonObject.put("msg","修改失败" );
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Address {
|
||||||
|
private int address_id;
|
||||||
|
private int user_id;
|
||||||
|
private String address_name;
|
||||||
|
private String address_sheng;
|
||||||
|
private String address_shi;
|
||||||
|
private String address_qu;
|
||||||
|
private String address_detail;
|
||||||
|
private String address_phone;
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Cart {
|
||||||
|
private int cart_id;
|
||||||
|
private int user_id;
|
||||||
|
private int flower_id;
|
||||||
|
private String pack_ids;
|
||||||
|
private int number;
|
||||||
|
}
|
||||||
@ -0,0 +1,119 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
|
||||||
|
@Table(name = "chatuser")
|
||||||
|
public class ChatUser {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@Column(name = "name")
|
||||||
|
private String name;
|
||||||
|
@Column(name = "password")
|
||||||
|
private String password;
|
||||||
|
@Column(name = "sex")
|
||||||
|
private String sex;
|
||||||
|
@Column(name = "age")
|
||||||
|
private Integer age;
|
||||||
|
@Column(name = "phone")
|
||||||
|
private String phone;
|
||||||
|
@Column(name = "role")
|
||||||
|
private String role;
|
||||||
|
@Column(name = "avatar")
|
||||||
|
private String avatar;
|
||||||
|
@Transient
|
||||||
|
private String token;
|
||||||
|
@Transient
|
||||||
|
private String verCode;
|
||||||
|
@Transient
|
||||||
|
private String newPassword;
|
||||||
|
|
||||||
|
public Integer getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSex() {
|
||||||
|
return sex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSex(String sex) {
|
||||||
|
this.sex = sex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getAge() {
|
||||||
|
return age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAge(Integer age) {
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPhone() {
|
||||||
|
return phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPhone(String phone) {
|
||||||
|
this.phone = phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToken() {
|
||||||
|
return token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToken(String token) {
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRole() {
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRole(String role) {
|
||||||
|
this.role = role;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVerCode() {
|
||||||
|
return verCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVerCode(String verCode) {
|
||||||
|
this.verCode = verCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAvatar() {
|
||||||
|
return avatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAvatar(String avatar) {
|
||||||
|
this.avatar = avatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNewPassword() {
|
||||||
|
return newPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNewPassword(String newPassword) {
|
||||||
|
this.newPassword = newPassword;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Class {
|
||||||
|
private int class_id;
|
||||||
|
private String class_name;
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Comment {
|
||||||
|
private int comment_id;
|
||||||
|
private int user_id;
|
||||||
|
private int flower_id;
|
||||||
|
private String comment_content;
|
||||||
|
private String comment_time;
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Discount {
|
||||||
|
private int discount_id;
|
||||||
|
private String discount_name;
|
||||||
|
private int discount_num;
|
||||||
|
private int discount_f_id;
|
||||||
|
private int discount_c_id;
|
||||||
|
private String discount_start_time;
|
||||||
|
private String discount_end_time;
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Flower {
|
||||||
|
private int flower_id;
|
||||||
|
private int flower_class;
|
||||||
|
private String flower_name;
|
||||||
|
private double flower_price;
|
||||||
|
private int flower_sale;
|
||||||
|
private String flower_pic;
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Gift {
|
||||||
|
private int gift_id;
|
||||||
|
private String gift_name;
|
||||||
|
private int gift_point;
|
||||||
|
private int gift_stock;
|
||||||
|
private String gift_pic;
|
||||||
|
}
|
||||||
@ -0,0 +1,109 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单人聊天
|
||||||
|
*/
|
||||||
|
@Table(name = "imsingle")
|
||||||
|
public class ImSingle {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Integer id;
|
||||||
|
/** 内容 */
|
||||||
|
@Column(name = "content")
|
||||||
|
private String content;
|
||||||
|
/** 发送人 */
|
||||||
|
@Column(name = "fromuser")
|
||||||
|
private String fromuser;
|
||||||
|
/** 发送人头像 */
|
||||||
|
@Column(name = "fromavatar")
|
||||||
|
private String fromavatar;
|
||||||
|
/** 时间 */
|
||||||
|
@Column(name = "time")
|
||||||
|
private String time;
|
||||||
|
/** 类型 */
|
||||||
|
@Column(name = "type")
|
||||||
|
private String type;
|
||||||
|
/** 接收人 */
|
||||||
|
@Column(name = "touser")
|
||||||
|
private String touser;
|
||||||
|
/** 接收人头像 */
|
||||||
|
@Column(name = "toavatar")
|
||||||
|
private String toavatar;
|
||||||
|
/** 是否已读 */
|
||||||
|
@Column(name = "readed")
|
||||||
|
private Integer readed;
|
||||||
|
|
||||||
|
public Integer getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
public void setId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContent() {
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContent(String content) {
|
||||||
|
this.content = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFromuser() {
|
||||||
|
return fromuser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFromuser(String fromuser) {
|
||||||
|
this.fromuser = fromuser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFromavatar() {
|
||||||
|
return fromavatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFromavatar(String fromavatar) {
|
||||||
|
this.fromavatar = fromavatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTime() {
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTime(String time) {
|
||||||
|
this.time = time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTouser() {
|
||||||
|
return touser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTouser(String touser) {
|
||||||
|
this.touser = touser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToavatar() {
|
||||||
|
return toavatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToavatar(String toavatar) {
|
||||||
|
this.toavatar = toavatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getReaded() {
|
||||||
|
return readed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReaded(Integer readed) {
|
||||||
|
this.readed = readed;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Member {
|
||||||
|
private int member_id;
|
||||||
|
private int user_id;
|
||||||
|
private String member_start_time;
|
||||||
|
private String member_end_time;
|
||||||
|
private int member_period;
|
||||||
|
private double member_money;
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Notice {
|
||||||
|
private int notice_id;
|
||||||
|
private String notice_title;
|
||||||
|
private String notice_content;
|
||||||
|
private String notice_time;
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Order_Detail_Flower {
|
||||||
|
private int order_id;
|
||||||
|
private int flower_id;
|
||||||
|
private String pack_ids;
|
||||||
|
private int number; //花卉数量
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Order_Detail_Gift {
|
||||||
|
private int order_id;
|
||||||
|
private int gift_id;
|
||||||
|
private int number; //礼品数量
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Pack {
|
||||||
|
private int pack_id;
|
||||||
|
private String pack_name;
|
||||||
|
private double pack_price;
|
||||||
|
}
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
public class Params {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private String username;
|
||||||
|
private String phone;
|
||||||
|
private String author;
|
||||||
|
private Integer userId;
|
||||||
|
private Integer pageNum;
|
||||||
|
private Integer pageSize;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPhone() {
|
||||||
|
return phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPhone(String phone) {
|
||||||
|
this.phone = phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAuthor() {
|
||||||
|
return author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthor(String author) {
|
||||||
|
this.author = author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getUserId() {
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserId(Integer userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getPageNum() {
|
||||||
|
return pageNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPageNum(Integer pageNum) {
|
||||||
|
this.pageNum = pageNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getPageSize() {
|
||||||
|
return pageSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPageSize(Integer pageSize) {
|
||||||
|
this.pageSize = pageSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsername() {
|
||||||
|
return username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsername(String username) {
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Rank {
|
||||||
|
private int id;
|
||||||
|
private String name;
|
||||||
|
private int value;
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class RecommendUtil {
|
||||||
|
private int order_id;
|
||||||
|
private int flower_id;
|
||||||
|
private int user_id;
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.flower.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class RelateDTO {
|
||||||
|
/** 用户id */
|
||||||
|
private Integer useId;
|
||||||
|
/** 商品id */
|
||||||
|
private Integer goodsId;
|
||||||
|
/** 指数 */
|
||||||
|
private Integer index;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Address;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface AddressMapper {
|
||||||
|
List<Address> addressList(int user_id); //获取所有地址信息
|
||||||
|
void addressAdd(Address c); //添加新地址
|
||||||
|
int addressDeletePer(int address_id); //删除单个地址
|
||||||
|
int addressDeleteMul(int[] address_ids); //批量删除地址
|
||||||
|
Address addressInfo(int address_id); //获取地址信息
|
||||||
|
int addressModify(Address c); //修改地址信息
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Cart;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface CartMapper {
|
||||||
|
List<Cart> cartList(int user_id); //获取所有购物车信息
|
||||||
|
List<Cart> cartListByQuery(int user_id,String flower_name);//查询购物车信息列表
|
||||||
|
void cartAdd(Cart cart); //添加新购物车
|
||||||
|
int cartDeletePer(int cart_id); //删除单个购物车
|
||||||
|
int cartDeleteMul(int[] cart_ids); //批量删除购物车
|
||||||
|
Cart cartInfo(int cart_id); //获取购物车信息
|
||||||
|
int cartModify(Cart cart); //修改购物车信息
|
||||||
|
int cartModify_num(Cart cart); //修改购物车信息_数量
|
||||||
|
List<Cart> cartRepeat(int user_id,int flower_id); //处理购物车重复加入
|
||||||
|
int cartNum(int user_id); //统计用户购物车数
|
||||||
|
|
||||||
|
List<Cart> findAllCart(); //查询所有购物车信息
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.ChatUser;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
import tk.mybatis.mapper.common.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@org.apache.ibatis.annotations.Mapper
|
||||||
|
@Repository
|
||||||
|
public interface ChatUserDao extends Mapper<ChatUser> {
|
||||||
|
@Select("select * from chatuser")
|
||||||
|
List<ChatUser> findAll();
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Class;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface ClassMapper {
|
||||||
|
List<Class> classList(); //获取所有类别信息
|
||||||
|
List<Class> classListByQuery(String class_name);//查询类别信息列表
|
||||||
|
void classAdd(Class c); //添加新类别
|
||||||
|
int classDeletePer(int class_id); //删除单个类别
|
||||||
|
int classDeleteMul(int[] class_ids); //批量删除类别
|
||||||
|
Class classInfo(int class_id); //获取类别信息
|
||||||
|
int classModify(Class c); //修改类别信息
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Comment;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface CommentMapper {
|
||||||
|
List<Comment> commentList(int flower_id); //获取商品评论信息
|
||||||
|
void commentAdd(Comment comment); //添加新评论
|
||||||
|
List<Comment> findAllComment(); //查找所有评论
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Discount;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface DiscountMapper {
|
||||||
|
List<Discount> discountList(); //获取所有折扣信息
|
||||||
|
List<Discount> discountListByQuery(String discount_name);//查询折扣信息列表
|
||||||
|
void discountAdd(Discount discount); //添加新折扣
|
||||||
|
int discountDeletePer(int discount_id); //删除单个折扣
|
||||||
|
int discountDeleteMul(int[] discount_ids); //批量删除折扣
|
||||||
|
Discount discountInfo(int discount_id); //获取折扣信息
|
||||||
|
int discountModify(Discount discount); //修改折扣信息
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Flower;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface FlowerMapper {
|
||||||
|
List<Flower> flowerList(); //获取所有花卉信息
|
||||||
|
List<Flower> flowerListByQuery(String flower_name);//查询花卉信息列表
|
||||||
|
void flowerAdd(Flower flower); //添加新花卉
|
||||||
|
int flowerDeletePer(int flower_id); //删除单个花卉
|
||||||
|
int flowerDeleteMul(int[] flower_ids); //批量删除花卉
|
||||||
|
Flower flowerInfo(int flower_id); //获取花卉信息
|
||||||
|
int flowerModify(Flower flower); //修改花卉信息
|
||||||
|
//前台
|
||||||
|
List<Flower> flowerRecommend(int class_id); // 花卉专区推荐
|
||||||
|
int flowerAddNum(int flower_id,int flower_sale); //下单花卉销量增加
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Gift;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface GiftMapper {
|
||||||
|
List<Gift> giftList(); //获取所有赠品信息
|
||||||
|
List<Gift> giftListByQuery(String gift_name);//查询赠品信息列表
|
||||||
|
void giftAdd(Gift gift); //添加新赠品
|
||||||
|
int giftDeletePer(int gift_id); //删除单个赠品
|
||||||
|
int giftDeleteMul(int[] gift_ids); //批量删除赠品
|
||||||
|
Gift giftInfo(int gift_id); //获取赠品信息
|
||||||
|
int giftModify(Gift gift); //修改赠品信息
|
||||||
|
|
||||||
|
//前台相关
|
||||||
|
int giftModifyStock(int gift_id,int gift_stock); //修改赠品库存
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.ImSingle;
|
||||||
|
import org.apache.ibatis.annotations.Insert;
|
||||||
|
import org.apache.ibatis.annotations.Update;
|
||||||
|
import tk.mybatis.mapper.common.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@org.apache.ibatis.annotations.Mapper
|
||||||
|
@Repository
|
||||||
|
public interface ImSingleDao extends Mapper<ImSingle> {
|
||||||
|
|
||||||
|
@Select("select * from imsingle where (fromuser = #{fromUser} and touser = #{toUser}) or (fromuser = #{toUser} and touser = #{fromUser})")
|
||||||
|
List<ImSingle> findByUsername(String fromUser, String toUser);
|
||||||
|
|
||||||
|
@Select("select * from imsingle where touser = #{toUser} and readed = 0")
|
||||||
|
List<ImSingle> findByToUsername(String toUser);
|
||||||
|
|
||||||
|
@Insert("insert into flower.imsingle(id,content,fromuser,fromavatar,time,type,touser,toavatar,readed) " +
|
||||||
|
"value (#{id},#{content},#{fromuser},#{fromavatar},#{time},#{type},#{touser},#{toavatar},#{readed})")
|
||||||
|
int insert(ImSingle imSingle);
|
||||||
|
|
||||||
|
@Update("update flower.imsingle set readed=#{readed} where id = #{id}")
|
||||||
|
void updateById(ImSingle imSingle);
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Member;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface MemberMapper {
|
||||||
|
void memberCharge(Member member); //会员充值
|
||||||
|
List<Member> memberHistory(int user_id); //查询充值记录
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Notice;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface NoticeMapper {
|
||||||
|
List<Notice> noticeList(); //获取所有公告信息
|
||||||
|
List<Notice> noticeListByQuery(String notice_content);//查询公告信息列表
|
||||||
|
void noticeAdd(Notice notice); //添加新公告
|
||||||
|
int noticeDeletePer(int notice_id); //删除单个公告
|
||||||
|
int noticeDeleteMul(int[] notice_ids); //批量删除公告
|
||||||
|
Notice noticeInfo(int notice_id); //获取公告信息
|
||||||
|
int noticeModify(Notice notice); //修改公告信息
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Order;
|
||||||
|
import com.example.flower.entity.Order_Detail_Flower;
|
||||||
|
import com.example.flower.entity.Order_Detail_Gift;
|
||||||
|
import com.example.flower.entity.Rank;
|
||||||
|
import com.example.flower.entity.RecommendUtil;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface OrderMapper {
|
||||||
|
List<Order> orderList(); //获取所有订单信息
|
||||||
|
List<Order> orderListByQuery(int order_id);//查询订单信息列表
|
||||||
|
int orderAdd(Order order); //添加新订单(总表)
|
||||||
|
int orderAdd_flower(Order_Detail_Flower order_detail_flower); //添加新订单(商品表)
|
||||||
|
int orderAdd_gift(Order_Detail_Gift order_detail_gift); //添加新订单(换赠表)
|
||||||
|
int orderDeletePer(int order_id); //删除单个订单
|
||||||
|
int orderDeleteMul(int[] order_ids); //批量删除订单
|
||||||
|
int orderModify(int order_id,int order_state,String time,String order_delivery_number); //订单状态修改
|
||||||
|
Order orderInfo(int order_id); //获取订单信息
|
||||||
|
List<Order_Detail_Flower> orderDetailFlower(int order_id); //获取花卉订单详情
|
||||||
|
List<Order_Detail_Gift> orderDetailGift(int order_id); //获取礼品订单详情
|
||||||
|
|
||||||
|
//前台
|
||||||
|
List<Order> orderUserListFlower(int user_id); //查询用户所有商品订单
|
||||||
|
List<Order> orderUserListGift(int user_id); //查询用户所有换赠订单
|
||||||
|
int orderUserDelete(int order_id); //用户删除订单(仅不可见)
|
||||||
|
int orderUserPay(int user_id); //用户订单统计-待付款
|
||||||
|
int orderUserSend(int user_id); //用户订单统计-待发货
|
||||||
|
int orderUserReceive(int user_id); //用户订单统计-待收货
|
||||||
|
|
||||||
|
//订单统计相关
|
||||||
|
int order_pay_num(); //今日下单数
|
||||||
|
int order_ok_num(); //今日成交订单数
|
||||||
|
double order_today_money(); //今日成交金额
|
||||||
|
double order_month_money(); //本月成交金额
|
||||||
|
int order_delivery_num(); //待发货订单数
|
||||||
|
int order_refund_num(); //待退款订单数
|
||||||
|
double order_month_line(String month); //每月成交金额折线图
|
||||||
|
List<Rank> order_flower_top3(); //花卉销量top3
|
||||||
|
List<Rank> order_class_rank(); //花卉类别销量饼图
|
||||||
|
|
||||||
|
//猜你喜欢
|
||||||
|
List<RecommendUtil> findAllFlowerOrder(); //查找所有花卉订单
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Pack;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface PackMapper {
|
||||||
|
List<Pack> packList(); //获取所有花材信息
|
||||||
|
List<Pack> packListByQuery(String pack_name);//查询花材信息列表
|
||||||
|
void packAdd(Pack pack); //添加新花材
|
||||||
|
int packDeletePer(int pack_id); //删除单个花材
|
||||||
|
int packDeleteMul(int[] pack_ids); //批量删除花材
|
||||||
|
Pack packInfo(int pack_id); //获取员工花材
|
||||||
|
int packModify(Pack pack); //修改花材信息
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Staff;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface StaffMapper {
|
||||||
|
Staff staffLogin(String staff_name); //员工后台登录
|
||||||
|
List<Staff> staffList(); //获取所有员工信息
|
||||||
|
List<Staff> staffListByQuery(String staff_name);//查询员工信息列表
|
||||||
|
void staffAdd(Staff staff); //添加新员工
|
||||||
|
int staffDeletePer(int staff_id); //删除单个员工
|
||||||
|
int staffDeleteMul(int[] staff_ids); //批量删除员工
|
||||||
|
Staff staffInfo(int staff_id); //获取员工信息
|
||||||
|
int staffModify(Staff staff); //修改员工信息
|
||||||
|
int staffModifyState(int staff_id,int staff_state); //修改单个员工状态
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package com.example.flower.mapper;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Staff;
|
||||||
|
import com.example.flower.entity.User;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface UserMapper {
|
||||||
|
List<User> userList();//获取所有员工列表
|
||||||
|
List<User> userListByQuery(String user_name);//查询用户信息列表
|
||||||
|
int userDeletePer(int user_id); //删除单个用户
|
||||||
|
int userDeleteMul(int[] user_ids); //批量删除用户
|
||||||
|
int userModifyState(int user_id,int user_state); //修改单个用户状态
|
||||||
|
|
||||||
|
//前台
|
||||||
|
User userLogin(String user_name); //用户登录
|
||||||
|
void userRegister(User user); //用户注册
|
||||||
|
User findByName(String user_name); //通过用户名查找用户,用于防止注册时用户名重复
|
||||||
|
User userInfo(int user_id); //获取用户信息
|
||||||
|
int userModify(User user); //修改用户信息
|
||||||
|
int userModifyMember(User user); //修改用户会员信息
|
||||||
|
int userModifyPoint(User user); //修改会员积分
|
||||||
|
}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
<?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.example.flower.mapper.AddressMapper">
|
||||||
|
<select id="addressList" resultType="com.example.flower.entity.Address">
|
||||||
|
select *
|
||||||
|
from flower.address
|
||||||
|
where user_id = #{user_id}
|
||||||
|
order by address_id desc
|
||||||
|
</select>
|
||||||
|
<insert id="addressAdd" useGeneratedKeys="true" keyProperty="address_id" parameterType="com.example.flower.entity.Address">
|
||||||
|
insert into flower.address(user_id, address_name, address_sheng, address_shi, address_qu, address_detail, address_phone)
|
||||||
|
value (#{user_id},#{address_name},#{address_sheng},#{address_shi},#{address_qu},#{address_detail},#{address_phone})
|
||||||
|
</insert>
|
||||||
|
<delete id="addressDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.address
|
||||||
|
where address_id = #{address_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="addressDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.address where address.address_id in
|
||||||
|
<foreach collection="address_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="addressInfo" resultType="com.example.flower.entity.Address">
|
||||||
|
select *
|
||||||
|
from flower.address
|
||||||
|
where address_id = #{address_id}
|
||||||
|
</select>
|
||||||
|
<update id="addressModify" parameterType="com.example.flower.entity.Address">
|
||||||
|
update flower.address
|
||||||
|
set address_name=if(#{address_name} is not null and #{address_name} != '',#{address_name},address_name),
|
||||||
|
address_sheng=if(#{address_sheng} is not null and #{address_sheng} != '',#{address_sheng},address_sheng),
|
||||||
|
address_shi=if(#{address_shi} is not null and #{address_shi} != '',#{address_shi},address_shi),
|
||||||
|
address_qu=if(#{address_qu} is not null and #{address_qu} != '',#{address_qu},address_qu),
|
||||||
|
address_detail=if(#{address_detail} is not null and #{address_detail} != '',#{address_detail},address_detail),
|
||||||
|
address_phone=if(#{address_phone} is not null and #{address_phone} != '',#{address_phone},address_phone)
|
||||||
|
where address.address_id = #{address_id}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,66 @@
|
|||||||
|
<?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.example.flower.mapper.CartMapper">
|
||||||
|
<select id="cartList" resultType="com.example.flower.entity.Cart">
|
||||||
|
select *
|
||||||
|
from flower.cart
|
||||||
|
where user_id = #{user_id}
|
||||||
|
order by cart_id desc
|
||||||
|
</select>
|
||||||
|
<select id="cartListByQuery" resultType="com.example.flower.entity.Cart">
|
||||||
|
select *
|
||||||
|
from flower.cart,flower.flower
|
||||||
|
<where>
|
||||||
|
and cart.flower_id = flower.flower_id
|
||||||
|
and user_id = #{user_id}
|
||||||
|
<if test="flower_name != null and flower_name != '' ">
|
||||||
|
and flower_name like concat('%',#{flower_name},'%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by cart_id desc
|
||||||
|
</select>
|
||||||
|
<insert id="cartAdd" useGeneratedKeys="true" keyProperty="cart_id" parameterType="com.example.flower.entity.Cart">
|
||||||
|
insert into flower.cart(user_id, flower_id, pack_ids, number)
|
||||||
|
value (#{user_id},#{flower_id},#{pack_ids},#{number})
|
||||||
|
</insert>
|
||||||
|
<delete id="cartDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.cart
|
||||||
|
where cart_id = #{cart_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="cartDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.cart where cart.cart_id in
|
||||||
|
<foreach collection="cart_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="cartInfo" resultType="com.example.flower.entity.Cart">
|
||||||
|
select *
|
||||||
|
from flower.cart
|
||||||
|
where cart_id = #{cart_id}
|
||||||
|
</select>
|
||||||
|
<update id="cartModify" parameterType="com.example.flower.entity.Cart">
|
||||||
|
update flower.cart
|
||||||
|
set pack_ids=#{pack_ids}
|
||||||
|
where cart.cart_id = #{cart_id}
|
||||||
|
</update>
|
||||||
|
<update id="cartModify_num" parameterType="com.example.flower.entity.Cart">
|
||||||
|
update flower.cart
|
||||||
|
set number=#{number}
|
||||||
|
where cart.cart_id = #{cart_id}
|
||||||
|
</update>
|
||||||
|
<select id="cartRepeat" resultType="com.example.flower.entity.Cart">
|
||||||
|
select *
|
||||||
|
from flower.cart
|
||||||
|
where user_id = #{user_id} and flower_id = #{flower_id}
|
||||||
|
</select>
|
||||||
|
<select id="cartNum" resultType="Integer">
|
||||||
|
select count(cart_id)
|
||||||
|
from cart
|
||||||
|
where user_id = #{user_id}
|
||||||
|
</select>
|
||||||
|
<select id="findAllCart" resultType="com.example.flower.entity.Cart">
|
||||||
|
select *
|
||||||
|
from cart
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
<?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.example.flower.mapper.ClassMapper">
|
||||||
|
<select id="classList" resultType="com.example.flower.entity.Class">
|
||||||
|
select *
|
||||||
|
from flower.class
|
||||||
|
</select>
|
||||||
|
<select id="classListByQuery" resultType="com.example.flower.entity.Class">
|
||||||
|
select *
|
||||||
|
from flower.class
|
||||||
|
<where>
|
||||||
|
<if test="class_name != null and class_name != '' ">
|
||||||
|
and class_name like concat('%',#{class_name},'%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<insert id="classAdd" useGeneratedKeys="true" keyProperty="class_id" parameterType="com.example.flower.entity.Class">
|
||||||
|
insert into flower.class(class_name)
|
||||||
|
value (#{class_name})
|
||||||
|
</insert>
|
||||||
|
<delete id="classDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.class
|
||||||
|
where class_id = #{class_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="classDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.class where class.class_id in
|
||||||
|
<foreach collection="class_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="classInfo" resultType="com.example.flower.entity.Class">
|
||||||
|
select *
|
||||||
|
from flower.class
|
||||||
|
where class_id = #{class_id}
|
||||||
|
</select>
|
||||||
|
<update id="classModify" parameterType="com.example.flower.entity.Class">
|
||||||
|
update flower.class
|
||||||
|
set class_name=if(#{class_name} is not null and #{class_name} != '',#{class_name},class_name)
|
||||||
|
where class.class_id = #{class_id}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -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.example.flower.mapper.CommentMapper">
|
||||||
|
<select id="commentList" resultType="com.example.flower.entity.Comment">
|
||||||
|
select *
|
||||||
|
from flower.comment
|
||||||
|
where flower_id=#{flower_id}
|
||||||
|
order by comment_id desc
|
||||||
|
</select>
|
||||||
|
<insert id="commentAdd" useGeneratedKeys="true" keyProperty="comment_id" parameterType="com.example.flower.entity.Comment">
|
||||||
|
insert into flower.comment(flower_id, user_id, comment_content, comment_time)
|
||||||
|
value (#{flower_id},#{user_id},#{comment_content},#{comment_time})
|
||||||
|
</insert>
|
||||||
|
<select id="findAllComment" resultType="com.example.flower.entity.Comment">
|
||||||
|
select *
|
||||||
|
from flower.comment
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
<?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.example.flower.mapper.DiscountMapper">
|
||||||
|
<select id="discountList" resultType="com.example.flower.entity.Discount">
|
||||||
|
select *
|
||||||
|
from flower.discount
|
||||||
|
order by discount_start_time desc
|
||||||
|
</select>
|
||||||
|
<select id="discountListByQuery" resultType="com.example.flower.entity.Discount">
|
||||||
|
select *
|
||||||
|
from flower.discount
|
||||||
|
<where>
|
||||||
|
<if test="discount_name != null and discount_name != '' ">
|
||||||
|
and discount_name like concat('%',#{discount_name},'%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by discount_start_time desc
|
||||||
|
</select>
|
||||||
|
<insert id="discountAdd" useGeneratedKeys="true" keyProperty="discount_id" parameterType="com.example.flower.entity.Discount">
|
||||||
|
insert into flower.discount(discount_name, discount_num,discount_f_id,discount_c_id,discount_start_time,discount_end_time)
|
||||||
|
value (#{discount_name},#{discount_num},#{discount_f_id},#{discount_c_id},#{discount_start_time},#{discount_end_time})
|
||||||
|
</insert>
|
||||||
|
<delete id="discountDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.discount
|
||||||
|
where discount_id = #{discount_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="discountDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.discount where discount.discount_id in
|
||||||
|
<foreach collection="discount_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="discountInfo" resultType="com.example.flower.entity.Discount">
|
||||||
|
select *
|
||||||
|
from flower.discount
|
||||||
|
where discount_id = #{discount_id}
|
||||||
|
</select>
|
||||||
|
<update id="discountModify" parameterType="com.example.flower.entity.Discount">
|
||||||
|
update flower.discount
|
||||||
|
set discount_name=if(#{discount_name} is not null and #{discount_name} != '',#{discount_name},discount_name),
|
||||||
|
discount_num=#{discount_num},
|
||||||
|
discount_f_id=#{discount_f_id},
|
||||||
|
discount_c_id=#{discount_c_id},
|
||||||
|
discount_start_time=if(#{discount_start_time} is not null and #{discount_start_time} != '',#{discount_start_time},discount_start_time),
|
||||||
|
discount_end_time=if(#{discount_end_time} is not null and #{discount_end_time} != '',#{discount_end_time},discount_end_time)
|
||||||
|
where discount.discount_id = #{discount_id}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,62 @@
|
|||||||
|
<?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.example.flower.mapper.FlowerMapper">
|
||||||
|
<select id="flowerList" resultType="com.example.flower.entity.Flower">
|
||||||
|
select *
|
||||||
|
from flower.flower
|
||||||
|
order by flower_id desc
|
||||||
|
</select>
|
||||||
|
<select id="flowerListByQuery" resultType="com.example.flower.entity.Flower">
|
||||||
|
select *
|
||||||
|
from flower.flower,flower.class
|
||||||
|
<where>
|
||||||
|
and flower.flower_class=class.class_id
|
||||||
|
<if test="flower_name != null and flower_name != '' ">
|
||||||
|
and (flower_name like concat('%',#{flower_name},'%')
|
||||||
|
or class_name like concat('%',#{flower_name},'%') )
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by flower_id desc
|
||||||
|
</select>
|
||||||
|
<insert id="flowerAdd" useGeneratedKeys="true" keyProperty="flower_id" parameterType="com.example.flower.entity.Flower">
|
||||||
|
insert into flower.flower(flower_name,flower_class, flower_price,flower_pic)
|
||||||
|
value (#{flower_name},#{flower_class},#{flower_price},#{flower_pic})
|
||||||
|
</insert>
|
||||||
|
<delete id="flowerDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.flower
|
||||||
|
where flower_id = #{flower_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="flowerDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.flower where flower.flower_id in
|
||||||
|
<foreach collection="flower_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="flowerInfo" resultType="com.example.flower.entity.Flower">
|
||||||
|
select *
|
||||||
|
from flower.flower
|
||||||
|
where flower_id = #{flower_id}
|
||||||
|
</select>
|
||||||
|
<update id="flowerModify" parameterType="com.example.flower.entity.Flower">
|
||||||
|
update flower.flower
|
||||||
|
set flower_name=if(#{flower_name} is not null and #{flower_name} != '',#{flower_name},flower_name),
|
||||||
|
flower_class=if(#{flower_class} != -1,#{flower_class},flower_class),
|
||||||
|
flower_price=#{flower_price},
|
||||||
|
flower_pic=if(#{flower_pic} is not null and #{flower_pic} != '',#{flower_pic},flower_pic)
|
||||||
|
where flower.flower_id = #{flower_id}
|
||||||
|
</update>
|
||||||
|
<!-- 前台 -->
|
||||||
|
<select id="flowerRecommend" resultType="com.example.flower.entity.Flower">
|
||||||
|
select *
|
||||||
|
from flower.flower
|
||||||
|
where
|
||||||
|
flower.flower_class = #{class_id}
|
||||||
|
limit 6
|
||||||
|
</select>
|
||||||
|
<update id="flowerAddNum" parameterType="com.example.flower.entity.Flower">
|
||||||
|
update flower.flower
|
||||||
|
set flower_sale= flower_sale+#{flower_sale}
|
||||||
|
where flower.flower_id = #{flower_id}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
<?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.example.flower.mapper.GiftMapper">
|
||||||
|
<select id="giftList" resultType="com.example.flower.entity.Gift">
|
||||||
|
select *
|
||||||
|
from flower.gift
|
||||||
|
</select>
|
||||||
|
<select id="giftListByQuery" resultType="com.example.flower.entity.Gift">
|
||||||
|
select *
|
||||||
|
from flower.gift
|
||||||
|
<where>
|
||||||
|
<if test="gift_name != null and gift_name != '' ">
|
||||||
|
and gift_name like concat('%',#{gift_name},'%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<insert id="giftAdd" useGeneratedKeys="true" keyProperty="gift_id" parameterType="com.example.flower.entity.Gift">
|
||||||
|
insert into flower.gift(gift_name, gift_point,gift_stock,gift_pic)
|
||||||
|
value (#{gift_name},#{gift_point},#{gift_stock},#{gift_pic})
|
||||||
|
</insert>
|
||||||
|
<delete id="giftDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.gift
|
||||||
|
where gift_id = #{gift_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="giftDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.gift where gift.gift_id in
|
||||||
|
<foreach collection="gift_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="giftInfo" resultType="com.example.flower.entity.Gift">
|
||||||
|
select *
|
||||||
|
from flower.gift
|
||||||
|
where gift_id = #{gift_id}
|
||||||
|
</select>
|
||||||
|
<update id="giftModify" parameterType="com.example.flower.entity.Gift">
|
||||||
|
update flower.gift
|
||||||
|
set gift_name=if(#{gift_name} is not null and #{gift_name} != '',#{gift_name},gift_name),
|
||||||
|
gift_point=#{gift_point},
|
||||||
|
gift_stock=#{gift_stock},
|
||||||
|
gift_pic=if(#{gift_pic} is not null and #{gift_pic} != '',#{gift_pic},gift_pic)
|
||||||
|
where gift.gift_id = #{gift_id}
|
||||||
|
</update>
|
||||||
|
<update id="giftModifyStock" parameterType="com.example.flower.entity.Gift">
|
||||||
|
update flower.gift
|
||||||
|
set gift_stock=gift_stock-#{gift_stock}
|
||||||
|
where gift.gift_id = #{gift_id}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
<?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.example.flower.mapper.MemberMapper">
|
||||||
|
<select id="memberHistory" resultType="com.example.flower.entity.Member">
|
||||||
|
select *
|
||||||
|
from flower.member
|
||||||
|
where user_id=#{user_id}
|
||||||
|
order by member_id desc
|
||||||
|
</select>
|
||||||
|
<insert id="memberCharge" useGeneratedKeys="true" keyProperty="member_id" parameterType="com.example.flower.entity.Member">
|
||||||
|
insert into flower.member(user_id, member_start_time, member_end_time, member_period, member_money)
|
||||||
|
value (#{user_id},#{member_start_time},#{member_end_time},#{member_period},#{member_money})
|
||||||
|
</insert>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
<?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.example.flower.mapper.NoticeMapper">
|
||||||
|
<select id="noticeList" resultType="com.example.flower.entity.Notice">
|
||||||
|
select *
|
||||||
|
from flower.notice
|
||||||
|
order by notice_time desc
|
||||||
|
</select>
|
||||||
|
<select id="noticeListByQuery" resultType="com.example.flower.entity.Notice">
|
||||||
|
select *
|
||||||
|
from flower.notice
|
||||||
|
<where>
|
||||||
|
<if test="notice_content != null and notice_content != '' ">
|
||||||
|
and notice_title like concat('%',#{notice_content},'%')
|
||||||
|
or notice_content like concat('%',#{notice_content},'%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by notice_time desc
|
||||||
|
</select>
|
||||||
|
<insert id="noticeAdd" useGeneratedKeys="true" keyProperty="notice_id" parameterType="com.example.flower.entity.Notice">
|
||||||
|
insert into flower.notice(notice_title,notice_content,notice_time)
|
||||||
|
value (#{notice_title},#{notice_content},#{notice_time})
|
||||||
|
</insert>
|
||||||
|
<delete id="noticeDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.notice
|
||||||
|
where notice_id = #{notice_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="noticeDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.notice where notice.notice_id in
|
||||||
|
<foreach collection="notice_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="noticeInfo" resultType="com.example.flower.entity.Notice">
|
||||||
|
select *
|
||||||
|
from flower.notice
|
||||||
|
where notice_id = #{notice_id}
|
||||||
|
</select>
|
||||||
|
<update id="noticeModify" parameterType="com.example.flower.entity.Notice">
|
||||||
|
update flower.notice
|
||||||
|
set notice_title=if(#{notice_title} is not null and #{notice_title} != '',#{notice_title},notice_title),
|
||||||
|
notice_content=if(#{notice_content} is not null and #{notice_content} != '',#{notice_content},notice_content),
|
||||||
|
notice_time=if(#{notice_time} is not null and #{notice_time} != '',#{notice_time},notice_time)
|
||||||
|
where notice.notice_id = #{notice_id}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,187 @@
|
|||||||
|
<?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.example.flower.mapper.OrderMapper">
|
||||||
|
<select id="orderList" resultType="com.example.flower.entity.Order">
|
||||||
|
select *
|
||||||
|
from flower.order
|
||||||
|
order by order_id desc
|
||||||
|
</select>
|
||||||
|
<select id="orderListByQuery" resultType="com.example.flower.entity.Order">
|
||||||
|
select *
|
||||||
|
from flower.order
|
||||||
|
where
|
||||||
|
order_id like concat('%',#{order_id},'%')
|
||||||
|
order by order_id desc
|
||||||
|
</select>
|
||||||
|
<insert id="orderAdd" useGeneratedKeys="true" keyProperty="order_id" parameterType="com.example.flower.entity.Order">
|
||||||
|
insert into flower.order(user_id, order_type, order_price, order_time, order_time_pay, order_address, order_phone, order_state, order_method, trans_fee, order_discount,order_seen)
|
||||||
|
value (#{user_id},#{order_type},#{order_price},#{order_time},#{order_time_pay},#{order_address},#{order_phone},#{order_state},#{order_method},#{trans_fee},#{order_discount},#{order_seen})
|
||||||
|
</insert>
|
||||||
|
<insert id="orderAdd_flower" parameterType="com.example.flower.entity.Order_Detail_Flower">
|
||||||
|
insert into flower.order_detail_flower(order_id, flower_id, pack_ids, number)
|
||||||
|
value (#{order_id},#{flower_id},#{pack_ids},#{number})
|
||||||
|
</insert>
|
||||||
|
<insert id="orderAdd_gift" parameterType="com.example.flower.entity.Order_Detail_Gift">
|
||||||
|
insert into flower.order_detail_gift(order_id, gift_id, number)
|
||||||
|
value (#{order_id},#{gift_id},#{number})
|
||||||
|
</insert>
|
||||||
|
<delete id="orderDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.order
|
||||||
|
where order_id = #{order_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="orderDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.order where order.order_id in
|
||||||
|
<foreach collection="order_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<update id="orderModify" parameterType="com.example.flower.entity.Order">
|
||||||
|
update flower.order
|
||||||
|
<set>
|
||||||
|
<if test="order_state==1">
|
||||||
|
order_state = #{order_state},
|
||||||
|
order_time_pay = #{time},
|
||||||
|
</if>
|
||||||
|
<if test="order_state==2">
|
||||||
|
order_state = #{order_state},
|
||||||
|
order_time_delivery = #{time},
|
||||||
|
order_delivery_number = #{order_delivery_number},
|
||||||
|
</if>
|
||||||
|
<if test="order_state==3">
|
||||||
|
order_state = #{order_state},
|
||||||
|
order_time_receive = #{time},
|
||||||
|
</if>
|
||||||
|
<if test="order_state==4">
|
||||||
|
order_state = #{order_state},
|
||||||
|
</if>
|
||||||
|
<if test="order_state==5">
|
||||||
|
order_state = #{order_state}
|
||||||
|
</if>
|
||||||
|
</set>
|
||||||
|
where order_id = #{order_id}
|
||||||
|
</update>
|
||||||
|
<select id="orderInfo" resultType="com.example.flower.entity.Order">
|
||||||
|
select *
|
||||||
|
from flower.order
|
||||||
|
where order_id = #{order_id}
|
||||||
|
</select>
|
||||||
|
<select id="orderDetailFlower" resultType="com.example.flower.entity.Order_Detail_Flower">
|
||||||
|
select *
|
||||||
|
from flower.order_detail_flower
|
||||||
|
where order_id = #{order_id}
|
||||||
|
</select>
|
||||||
|
<select id="orderDetailGift" resultType="com.example.flower.entity.Order_Detail_Gift">
|
||||||
|
select *
|
||||||
|
from flower.order_detail_gift
|
||||||
|
where order_id = #{order_id}
|
||||||
|
</select>
|
||||||
|
<!-- 前台相关 -->
|
||||||
|
<select id="orderUserListFlower" resultType="com.example.flower.entity.Order">
|
||||||
|
select *
|
||||||
|
from flower.order
|
||||||
|
where user_id=#{user_id} and order_seen=1 and order_type=0
|
||||||
|
order by order_id desc
|
||||||
|
</select>
|
||||||
|
<select id="orderUserListGift" resultType="com.example.flower.entity.Order">
|
||||||
|
select *
|
||||||
|
from flower.order
|
||||||
|
where user_id=#{user_id} and order_seen=1 and order_type=1
|
||||||
|
order by order_id desc
|
||||||
|
</select>
|
||||||
|
<update id="orderUserDelete" parameterType="Integer">
|
||||||
|
update flower.order
|
||||||
|
set order_seen=0
|
||||||
|
where order_id = #{order_id}
|
||||||
|
</update>
|
||||||
|
<select id="orderUserPay" resultType="Integer">
|
||||||
|
select count(order_id)
|
||||||
|
from flower.order
|
||||||
|
where order_state = 0 and user_id=#{user_id} and order_seen=1
|
||||||
|
</select>
|
||||||
|
<select id="orderUserSend" resultType="Integer">
|
||||||
|
select count(order_id)
|
||||||
|
from flower.order
|
||||||
|
where order_state = 1 and user_id=#{user_id} and order_seen=1
|
||||||
|
</select>
|
||||||
|
<select id="orderUserReceive" resultType="Integer">
|
||||||
|
select count(order_id)
|
||||||
|
from flower.order
|
||||||
|
where order_state = 2 and user_id=#{user_id} and order_seen=1
|
||||||
|
</select>
|
||||||
|
<!-- 后台订单统计相关 -->
|
||||||
|
<select id="order_pay_num" resultType="Integer">
|
||||||
|
select count(order_id)
|
||||||
|
from flower.order
|
||||||
|
where
|
||||||
|
order_type = 0 and TO_DAYS(order_time) = TO_DAYS(Now())
|
||||||
|
</select>
|
||||||
|
<select id="order_ok_num" resultType="Integer">
|
||||||
|
select count(order_id)
|
||||||
|
from flower.order
|
||||||
|
where
|
||||||
|
order_type = 0
|
||||||
|
and TO_DAYS(order_time_receive) = TO_DAYS(Now())
|
||||||
|
and order_state = 3
|
||||||
|
</select>
|
||||||
|
<select id="order_today_money" resultType="Double">
|
||||||
|
select COALESCE(SUM(order_price),0)
|
||||||
|
from flower.order
|
||||||
|
where
|
||||||
|
order_type = 0
|
||||||
|
and TO_DAYS(order_time_receive) = TO_DAYS(Now())
|
||||||
|
and order_state = 3
|
||||||
|
</select>
|
||||||
|
<select id="order_month_money" resultType="Double">
|
||||||
|
select COALESCE(SUM(order_price),0)
|
||||||
|
from flower.order
|
||||||
|
where
|
||||||
|
order_type = 0
|
||||||
|
and DATE_FORMAT(order_time_receive, '%Y-%m') = DATE_FORMAT(now(),'%Y-%m')
|
||||||
|
and order_state = 3
|
||||||
|
</select>
|
||||||
|
<select id="order_delivery_num" resultType="Integer">
|
||||||
|
select count(order_id)
|
||||||
|
from flower.order
|
||||||
|
where order_state = 1
|
||||||
|
</select>
|
||||||
|
<select id="order_refund_num" resultType="Integer">
|
||||||
|
select count(order_id)
|
||||||
|
from flower.order
|
||||||
|
where order_state = 4
|
||||||
|
</select>
|
||||||
|
<select id="order_month_line" resultType="Double">
|
||||||
|
select COALESCE(SUM(order_price),0)
|
||||||
|
from flower.order
|
||||||
|
where
|
||||||
|
order_type = 0
|
||||||
|
and DATE_FORMAT(order_time_receive, '%Y-%m') = #{month}
|
||||||
|
and order_state = 3
|
||||||
|
</select>
|
||||||
|
<select id="order_flower_top3" resultType="com.example.flower.entity.Rank">
|
||||||
|
SELECT
|
||||||
|
flower_id as id,
|
||||||
|
flower_name as name,
|
||||||
|
flower_sale as value
|
||||||
|
FROM flower
|
||||||
|
ORDER BY
|
||||||
|
value DESC
|
||||||
|
LIMIT 3
|
||||||
|
</select>
|
||||||
|
<select id="order_class_rank" resultType="com.example.flower.entity.Rank">
|
||||||
|
SELECT
|
||||||
|
class_id as id,
|
||||||
|
class_name as name,
|
||||||
|
SUM(flower_sale) as value
|
||||||
|
FROM flower, class
|
||||||
|
WHERE
|
||||||
|
flower.flower_class = class.class_id
|
||||||
|
GROUP BY class_id
|
||||||
|
</select>
|
||||||
|
<!-- 猜你喜欢 -->
|
||||||
|
<select id="findAllFlowerOrder" resultType="com.example.flower.entity.RecommendUtil">
|
||||||
|
SELECT `order`.order_id,flower_id,user_id
|
||||||
|
FROM `order`,order_detail_flower
|
||||||
|
WHERE `order`.order_id = order_detail_flower.flower_id
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
<?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.example.flower.mapper.PackMapper">
|
||||||
|
<select id="packList" resultType="com.example.flower.entity.Pack">
|
||||||
|
select *
|
||||||
|
from flower.pack
|
||||||
|
</select>
|
||||||
|
<select id="packListByQuery" resultType="com.example.flower.entity.Pack">
|
||||||
|
select *
|
||||||
|
from flower.pack
|
||||||
|
<where>
|
||||||
|
<if test="pack_name != null and pack_name != '' ">
|
||||||
|
and pack_name like concat('%',#{pack_name},'%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<insert id="packAdd" useGeneratedKeys="true" keyProperty="pack_id" parameterType="com.example.flower.entity.Pack">
|
||||||
|
insert into flower.pack(pack_name, pack_price)
|
||||||
|
value (#{pack_name},#{pack_price})
|
||||||
|
</insert>
|
||||||
|
<delete id="packDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.pack
|
||||||
|
where pack_id = #{pack_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="packDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.pack where pack.pack_id in
|
||||||
|
<foreach collection="pack_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="packInfo" resultType="com.example.flower.entity.Pack">
|
||||||
|
select *
|
||||||
|
from flower.pack
|
||||||
|
where pack_id = #{pack_id}
|
||||||
|
</select>
|
||||||
|
<update id="packModify" parameterType="com.example.flower.entity.Pack">
|
||||||
|
update flower.pack
|
||||||
|
set pack_name=if(#{pack_name} is not null and #{pack_name} != '',#{pack_name},pack_name),
|
||||||
|
pack_price=#{pack_price}
|
||||||
|
where pack.pack_id = #{pack_id}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
<?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.example.flower.mapper.StaffMapper">
|
||||||
|
<select id="staffLogin" resultType="com.example.flower.entity.Staff">
|
||||||
|
select *
|
||||||
|
from flower.staff
|
||||||
|
where staff_name = #{staff_name}
|
||||||
|
</select>
|
||||||
|
<select id="staffList" resultType="com.example.flower.entity.Staff">
|
||||||
|
select *
|
||||||
|
from flower.staff
|
||||||
|
</select>
|
||||||
|
<select id="staffListByQuery" resultType="com.example.flower.entity.Staff">
|
||||||
|
select *
|
||||||
|
from flower.staff
|
||||||
|
<where>
|
||||||
|
<if test="staff_name != null and staff_name != '' ">
|
||||||
|
and staff_name like concat('%',#{staff_name},'%')
|
||||||
|
or staff_full_name like concat('%',#{staff_name},'%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<insert id="staffAdd" useGeneratedKeys="true" keyProperty="staff_id" parameterType="com.example.flower.entity.Staff">
|
||||||
|
insert into flower.staff(staff_name, staff_pwd,staff_full_name,staff_role,staff_state,staff_phone,staff_pic)
|
||||||
|
value (#{staff_name},#{staff_pwd},#{staff_full_name},#{staff_role},#{staff_state},#{staff_phone},#{staff_pic})
|
||||||
|
</insert>
|
||||||
|
<delete id="staffDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.staff
|
||||||
|
where staff_id = #{staff_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="staffDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.staff where staff.staff_id in
|
||||||
|
<foreach collection="staff_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<select id="staffInfo" resultType="com.example.flower.entity.Staff">
|
||||||
|
select *
|
||||||
|
from flower.staff
|
||||||
|
where staff_id = #{staff_id}
|
||||||
|
</select>
|
||||||
|
<update id="staffModify" parameterType="com.example.flower.entity.Staff">
|
||||||
|
update flower.staff
|
||||||
|
set staff_name=if(#{staff_name} is not null and #{staff_name} != '',#{staff_name},staff_name),
|
||||||
|
staff_pwd=if(#{staff_pwd} is not null and #{staff_pwd} != '',#{staff_pwd},staff_pwd),
|
||||||
|
staff_full_name=if(#{staff_full_name} is not null and #{staff_full_name} != '',#{staff_full_name},staff_full_name),
|
||||||
|
staff_state=if(#{staff_state} =1 or #{staff_state} = 0,#{staff_state},staff_state),
|
||||||
|
staff_role=if(#{staff_role} =1 or #{staff_role} = 0,#{staff_role},staff_role),
|
||||||
|
staff_phone=if(#{staff_phone} is not null and #{staff_phone} != '',#{staff_phone},staff_phone),
|
||||||
|
staff_pic=if(#{staff_pic} is not null and #{staff_pic} != '',#{staff_pic},staff_pic)
|
||||||
|
where staff.staff_id = #{staff_id}
|
||||||
|
</update>
|
||||||
|
<update id="staffModifyState" parameterType="Integer">
|
||||||
|
update flower.staff
|
||||||
|
set staff_state = #{staff_state}
|
||||||
|
where staff_id = #{staff_id}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
<?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.example.flower.mapper.UserMapper">
|
||||||
|
<select id="userList" resultType="com.example.flower.entity.User">
|
||||||
|
select *
|
||||||
|
from flower.user
|
||||||
|
</select>
|
||||||
|
<select id="userListByQuery" resultType="com.example.flower.entity.User">
|
||||||
|
select *
|
||||||
|
from flower.user
|
||||||
|
<where>
|
||||||
|
<if test="user_name != null and user_name != '' ">
|
||||||
|
and user_name like concat('%',#{user_name},'%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<delete id="userDeletePer">
|
||||||
|
delete
|
||||||
|
from flower.user
|
||||||
|
where user_id = #{user_id}
|
||||||
|
</delete>
|
||||||
|
<delete id="userDeleteMul" parameterType="Integer">
|
||||||
|
delete from flower.user where user.user_id in
|
||||||
|
<foreach collection="user_ids" open="(" close=")" separator="," item="id">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
<update id="userModifyState" parameterType="Integer">
|
||||||
|
update flower.user
|
||||||
|
set user_state = #{user_state}
|
||||||
|
where user_id = #{user_id}
|
||||||
|
</update>
|
||||||
|
<!-- 前台 -->
|
||||||
|
<select id="userLogin" resultType="com.example.flower.entity.User">
|
||||||
|
select *
|
||||||
|
from flower.user
|
||||||
|
where user_name = #{user_name}
|
||||||
|
</select>
|
||||||
|
<insert id="userRegister" useGeneratedKeys="true" keyProperty="user_id" parameterType="com.example.flower.entity.User">
|
||||||
|
insert into flower.user(user_name, user_pwd,user_role,user_state,user_phone,user_pic)
|
||||||
|
value (#{user_name},#{user_pwd},#{user_role},#{user_state},#{user_phone},#{user_pic})
|
||||||
|
</insert>
|
||||||
|
<select id="findByName" resultType="com.example.flower.entity.User">
|
||||||
|
select *
|
||||||
|
from flower.user
|
||||||
|
where user_name = #{user_name}
|
||||||
|
</select>
|
||||||
|
<select id="userInfo" resultType="com.example.flower.entity.User">
|
||||||
|
select *
|
||||||
|
from flower.user
|
||||||
|
where user_id = #{user_id}
|
||||||
|
</select>
|
||||||
|
<update id="userModify" parameterType="com.example.flower.entity.User">
|
||||||
|
update flower.user
|
||||||
|
set user_name=if(#{user_name} is not null and #{user_name} != '',#{user_name},user_name),
|
||||||
|
user_pwd=if(#{user_pwd} is not null and #{user_pwd} != '',#{user_pwd},user_pwd),
|
||||||
|
user_state=if(#{user_state} =1 or #{user_state} = 0,#{user_state},user_state),
|
||||||
|
user_role=if(#{user_role} =1 or #{user_role} = 0,#{user_role},user_role),
|
||||||
|
user_phone=if(#{user_phone} is not null and #{user_phone} != '',#{user_phone},user_phone),
|
||||||
|
user_pic=if(#{user_pic} is not null and #{user_pic} != '',#{user_pic},user_pic)
|
||||||
|
where user.user_id = #{user_id}
|
||||||
|
</update>
|
||||||
|
<update id="userModifyMember" parameterType="com.example.flower.entity.User">
|
||||||
|
update flower.user
|
||||||
|
set member_start_time=if(#{member_start_time} is not null and #{member_start_time} != '',#{member_start_time},member_start_time),
|
||||||
|
member_end_time=if(#{member_end_time} is not null and #{member_end_time} != '',#{member_end_time},member_end_time),
|
||||||
|
user_role=1
|
||||||
|
where user.user_id = #{user_id}
|
||||||
|
</update>
|
||||||
|
<update id="userModifyPoint" parameterType="com.example.flower.entity.User">
|
||||||
|
update flower.user
|
||||||
|
set member_point=if(#{member_point} is not null and #{member_point} != '',#{member_point},member_point)
|
||||||
|
where user.user_id = #{user_id} and user_role = 1
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Address;
|
||||||
|
import com.example.flower.mapper.AddressMapper;
|
||||||
|
import com.example.flower.service.impl.AddressServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class AddressService implements AddressServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private AddressMapper addressMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Address> addressList(int page, int page_size,int user_id) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(addressMapper.addressList(user_id));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void addressAdd(Address address){
|
||||||
|
addressMapper.addressAdd(address);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int addressDeletePer(int address_id){
|
||||||
|
return addressMapper.addressDeletePer(address_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int addressDeleteMul(int[] address_ids){
|
||||||
|
return addressMapper.addressDeleteMul(address_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Address addressInfo(int address_id){
|
||||||
|
return addressMapper.addressInfo(address_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int addressModify(Address address){
|
||||||
|
return addressMapper.addressModify(address);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Cart;
|
||||||
|
import com.example.flower.mapper.CartMapper;
|
||||||
|
import com.example.flower.service.impl.CartServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class CartService implements CartServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private CartMapper cartMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Cart> cartList(int page, int page_size,int user_id) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(cartMapper.cartList(user_id));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Cart> cartListByQuery(int page,int page_size,int user_id,String flower_name){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(cartMapper.cartListByQuery(user_id,flower_name));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void cartAdd(Cart cart){
|
||||||
|
cartMapper.cartAdd(cart);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int cartDeletePer(int cart_id){
|
||||||
|
return cartMapper.cartDeletePer(cart_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int cartDeleteMul(int[] cart_ids){
|
||||||
|
return cartMapper.cartDeleteMul(cart_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Cart cartInfo(int cart_id){
|
||||||
|
return cartMapper.cartInfo(cart_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int cartModify(Cart cart){
|
||||||
|
return cartMapper.cartModify(cart);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int cartModify_num(Cart cart){
|
||||||
|
return cartMapper.cartModify_num(cart);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<Cart> cartRepeat(int user_id, int flower_id){
|
||||||
|
return cartMapper.cartRepeat(user_id,flower_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int cartNum(int user_id){
|
||||||
|
return cartMapper.cartNum(user_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.mapper.ChatUserDao;
|
||||||
|
import com.example.flower.entity.Params;
|
||||||
|
import com.example.flower.entity.ChatUser;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ChatUserService {
|
||||||
|
@Resource
|
||||||
|
private ChatUserDao chatUserDao;
|
||||||
|
public List<ChatUser> findAll() {
|
||||||
|
return chatUserDao.findAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Class;
|
||||||
|
import com.example.flower.mapper.ClassMapper;
|
||||||
|
import com.example.flower.service.impl.ClassServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ClassService implements ClassServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private ClassMapper classMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Class> classList(int page, int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(classMapper.classList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Class> classListByQuery(int page,int page_size,String class_name){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(classMapper.classListByQuery(class_name));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void classAdd(Class c){
|
||||||
|
classMapper.classAdd(c);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int classDeletePer(int class_id){
|
||||||
|
return classMapper.classDeletePer(class_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int classDeleteMul(int[] class_ids){
|
||||||
|
return classMapper.classDeleteMul(class_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Class classInfo(int class_id){
|
||||||
|
return classMapper.classInfo(class_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int classModify(Class c){
|
||||||
|
return classMapper.classModify(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Comment;
|
||||||
|
import com.example.flower.mapper.CommentMapper;
|
||||||
|
import com.example.flower.service.impl.CommentServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class CommentService implements CommentServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private CommentMapper commentMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Comment> commentList(int page, int page_size,int flower_id) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(commentMapper.commentList(flower_id));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void commentAdd(Comment comment){
|
||||||
|
commentMapper.commentAdd(comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Discount;
|
||||||
|
import com.example.flower.mapper.DiscountMapper;
|
||||||
|
import com.example.flower.service.impl.DiscountServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class DiscountService implements DiscountServiceImpl{
|
||||||
|
@Resource
|
||||||
|
private DiscountMapper discountMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Discount> discountList(int page, int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(discountMapper.discountList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Discount> discountListByQuery(int page,int page_size,String discount_name){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(discountMapper.discountListByQuery(discount_name));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void discountAdd(Discount discount){
|
||||||
|
discountMapper.discountAdd(discount);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int discountDeletePer(int discount_id){
|
||||||
|
return discountMapper.discountDeletePer(discount_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int discountDeleteMul(int[] discount_ids){
|
||||||
|
return discountMapper.discountDeleteMul(discount_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Discount discountInfo(int discount_id){
|
||||||
|
return discountMapper.discountInfo(discount_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int discountModify(Discount discount){
|
||||||
|
return discountMapper.discountModify(discount);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,149 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.example.flower.entity.*;
|
||||||
|
import com.example.flower.mapper.*;
|
||||||
|
import com.example.flower.service.impl.FlowerServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import com.example.flower.unit.UserCF;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class FlowerService implements FlowerServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private FlowerMapper flowerMapper;
|
||||||
|
@Resource
|
||||||
|
private CartMapper cartMapper;
|
||||||
|
@Resource
|
||||||
|
private OrderMapper orderMapper;
|
||||||
|
@Resource
|
||||||
|
private UserMapper userMapper;
|
||||||
|
@Resource
|
||||||
|
private CommentMapper commentMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Flower> flowerList(int page, int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(flowerMapper.flowerList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Flower> flowerListByQuery(int page,int page_size,String flower_name){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(flowerMapper.flowerListByQuery(flower_name));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void flowerAdd(Flower flower){
|
||||||
|
flowerMapper.flowerAdd(flower);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int flowerDeletePer(int flower_id){
|
||||||
|
return flowerMapper.flowerDeletePer(flower_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int flowerDeleteMul(int[] flower_ids){
|
||||||
|
return flowerMapper.flowerDeleteMul(flower_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Flower flowerInfo(int flower_id){
|
||||||
|
return flowerMapper.flowerInfo(flower_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int flowerModify(Flower flower){
|
||||||
|
return flowerMapper.flowerModify(flower);
|
||||||
|
}
|
||||||
|
//前台
|
||||||
|
@Override
|
||||||
|
public List<Flower> flowerRecommend(int class_id){
|
||||||
|
return flowerMapper.flowerRecommend(class_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int flowerAddNum(int flower_id,int flower_sale){
|
||||||
|
return flowerMapper.flowerAddNum(flower_id,flower_sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
//猜你喜欢
|
||||||
|
@Override
|
||||||
|
public List<Flower> recommend(int user_id) {
|
||||||
|
// 用户的哪些行为可以认为他跟商品产生了关系?加入购物车、下单、评论
|
||||||
|
// 1. 获取所有的购物车信息
|
||||||
|
List<Cart> allCarts = cartMapper.findAllCart();
|
||||||
|
// 2. 获取所有的订单信息
|
||||||
|
List<RecommendUtil> allOrders = orderMapper.findAllFlowerOrder();
|
||||||
|
// 3. 获取所有的评论信息
|
||||||
|
List<Comment> allComments = commentMapper.findAllComment();
|
||||||
|
// 4. 获取所有的用户信息
|
||||||
|
List<User> allUsers = userMapper.userList();
|
||||||
|
// 5. 获取所有的商品信息
|
||||||
|
List<Flower> allFlower = flowerMapper.flowerList();
|
||||||
|
|
||||||
|
// 定义一个存储每个商品和每个用户关系的List
|
||||||
|
List<RelateDTO> data = new ArrayList<>();
|
||||||
|
// 定义一个存储最后返回给前端的商品List
|
||||||
|
List<Flower> result;
|
||||||
|
|
||||||
|
// 开始计算每个商品和每个用户之间的关系数据
|
||||||
|
for (Flower flower : allFlower) {
|
||||||
|
Integer flowerId = flower.getFlower_id();
|
||||||
|
for (User user : allUsers) {
|
||||||
|
int userId = user.getUser_id();
|
||||||
|
int index = 1;
|
||||||
|
// 1. 判断该用户有没有给该商品加入购物车,加入购物车的权重给 2
|
||||||
|
Optional<Cart> cartOptional = allCarts.stream().filter(x -> x.getFlower_id()==flowerId && x.getUser_id()==userId).findFirst();
|
||||||
|
if (cartOptional.isPresent()) {
|
||||||
|
index += 2;
|
||||||
|
}
|
||||||
|
// 2. 判断该用户有没有对该商品下过单(已完成的订单),订单的权重给 3
|
||||||
|
Optional<RecommendUtil> ordersOptional = allOrders.stream().filter(x -> x.getFlower_id()==flowerId && x.getUser_id()==userId).findFirst();
|
||||||
|
if (ordersOptional.isPresent()) {
|
||||||
|
index += 3;
|
||||||
|
}
|
||||||
|
// 3. 判断该用户有没有对该商品评论过,评论的权重给 1
|
||||||
|
Optional<Comment> commentOptional = allComments.stream().filter(x -> x.getFlower_id()==flowerId && x.getUser_id()==userId).findFirst();
|
||||||
|
if (commentOptional.isPresent()) {
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
if (index > 1) {
|
||||||
|
RelateDTO relateDTO = new RelateDTO(userId, flowerId, index);
|
||||||
|
data.add(relateDTO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 数据准备结束后,就把这些数据一起给这个推荐算法
|
||||||
|
List<Integer> flowerIds = UserCF.recommend(user_id, data);
|
||||||
|
// 把商品id转换成商品
|
||||||
|
result = flowerIds.stream().map(flowerId -> allFlower.stream()
|
||||||
|
.filter(x -> x.getFlower_id()==flowerId).findFirst().orElse(null))
|
||||||
|
.limit(6).collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (CollectionUtil.isEmpty(result)) {
|
||||||
|
// 随机给它推荐10个
|
||||||
|
return getRandomFlower(6);
|
||||||
|
}
|
||||||
|
if (result.size() < 6) {
|
||||||
|
int num = 6 - result.size();
|
||||||
|
List<Flower> list = getRandomFlower(num);
|
||||||
|
result.addAll(list);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Flower> getRandomFlower(int num) {
|
||||||
|
List<Flower> list = new ArrayList<>(num);
|
||||||
|
List<Flower> flower = flowerMapper.flowerList();
|
||||||
|
for (int i = 0; i < num; i++) {
|
||||||
|
int index = new Random().nextInt(flower.size());
|
||||||
|
list.add(flower.get(index));
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Gift;
|
||||||
|
import com.example.flower.mapper.GiftMapper;
|
||||||
|
import com.example.flower.service.impl.GiftServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class GiftService implements GiftServiceImpl{
|
||||||
|
@Resource
|
||||||
|
private GiftMapper giftMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Gift> giftList(int page, int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(giftMapper.giftList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Gift> giftListByQuery(int page,int page_size,String gift_name){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(giftMapper.giftListByQuery(gift_name));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void giftAdd(Gift gift){
|
||||||
|
giftMapper.giftAdd(gift);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int giftDeletePer(int gift_id){
|
||||||
|
return giftMapper.giftDeletePer(gift_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int giftDeleteMul(int[] gift_ids){
|
||||||
|
return giftMapper.giftDeleteMul(gift_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Gift giftInfo(int gift_id){
|
||||||
|
return giftMapper.giftInfo(gift_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int giftModify(Gift gift){
|
||||||
|
return giftMapper.giftModify(gift);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int giftModifyStock(int gift_id,int gift_stock){
|
||||||
|
return giftMapper.giftModifyStock(gift_id,gift_stock);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.lang.Dict;
|
||||||
|
import com.example.flower.mapper.ImSingleDao;
|
||||||
|
import com.example.flower.entity.ImSingle;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ImSingleService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ImSingleDao imSingleDao;
|
||||||
|
|
||||||
|
public ImSingle add(ImSingle imSingle) {
|
||||||
|
imSingle.setReaded(0);
|
||||||
|
imSingleDao.insert(imSingle);
|
||||||
|
return imSingle;
|
||||||
|
}
|
||||||
|
public List<ImSingle> findByUsername(String fromUser, String toUser) {
|
||||||
|
List<ImSingle> list = imSingleDao.findByUsername(fromUser, toUser);
|
||||||
|
list.forEach(x -> {
|
||||||
|
if (x.getTouser().equals(fromUser) && x.getFromuser().equals(toUser)) {
|
||||||
|
x.setReaded(1);
|
||||||
|
imSingleDao.updateById(x);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
public Dict findUnReadNums(String toUsername) {
|
||||||
|
List<ImSingle> list = imSingleDao.findByToUsername(toUsername);
|
||||||
|
Map<String, List<ImSingle>> collect = list.stream().collect(Collectors.groupingBy(ImSingle::getFromuser));
|
||||||
|
Dict dict = Dict.create();
|
||||||
|
collect.forEach((k,v) -> dict.set(k, v.size()));
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Member;
|
||||||
|
import com.example.flower.mapper.MemberMapper;
|
||||||
|
import com.example.flower.service.impl.MemberServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class MemberService implements MemberServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private MemberMapper memberMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Member> memberHistory(int page, int page_size,int user_id) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(memberMapper.memberHistory(user_id));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void memberCharge(Member member){
|
||||||
|
memberMapper.memberCharge(member);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Notice;
|
||||||
|
import com.example.flower.mapper.NoticeMapper;
|
||||||
|
import com.example.flower.service.impl.NoticeServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class NoticeService implements NoticeServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private NoticeMapper noticeMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Notice> noticeList(int page, int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(noticeMapper.noticeList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Notice> noticeListByQuery(int page,int page_size,String notice_content){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(noticeMapper.noticeListByQuery(notice_content));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void noticeAdd(Notice notice){
|
||||||
|
noticeMapper.noticeAdd(notice);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int noticeDeletePer(int notice_id){
|
||||||
|
return noticeMapper.noticeDeletePer(notice_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int noticeDeleteMul(int[] notice_ids){
|
||||||
|
return noticeMapper.noticeDeleteMul(notice_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Notice noticeInfo(int notice_id){
|
||||||
|
return noticeMapper.noticeInfo(notice_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int noticeModify(Notice notice){
|
||||||
|
return noticeMapper.noticeModify(notice);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,133 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Order;
|
||||||
|
import com.example.flower.entity.Order_Detail_Flower;
|
||||||
|
import com.example.flower.entity.Order_Detail_Gift;
|
||||||
|
import com.example.flower.entity.Rank;
|
||||||
|
import com.example.flower.mapper.OrderMapper;
|
||||||
|
import com.example.flower.service.impl.OrderServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class OrderService implements OrderServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private OrderMapper orderMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Order> orderList(int page, int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(orderMapper.orderList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Order> orderListByQuery(int page,int page_size,int order_id){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(orderMapper.orderListByQuery(order_id));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderAdd(Order order){
|
||||||
|
return orderMapper.orderAdd(order);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderAdd_flower(Order_Detail_Flower order_detail_flower) {
|
||||||
|
return orderMapper.orderAdd_flower(order_detail_flower);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderAdd_gift(Order_Detail_Gift order_detail_gift){
|
||||||
|
return orderMapper.orderAdd_gift(order_detail_gift);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderDeletePer(int order_id){
|
||||||
|
return orderMapper.orderDeletePer(order_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderDeleteMul(int[] order_ids){
|
||||||
|
return orderMapper.orderDeleteMul(order_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderModify(int order_id,int order_state,String time,String order_delivery_number){
|
||||||
|
return orderMapper.orderModify(order_id,order_state,time,order_delivery_number);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Order orderInfo(int order_id){
|
||||||
|
return orderMapper.orderInfo(order_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<Order_Detail_Flower> orderDetailFlower(int order_id){
|
||||||
|
return orderMapper.orderDetailFlower(order_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<Order_Detail_Gift> orderDetailGift(int order_id){
|
||||||
|
return orderMapper.orderDetailGift(order_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
//前台
|
||||||
|
@Override
|
||||||
|
public PageInfo<Order> orderUserListFlower(int page,int page_size,int user_id){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(orderMapper.orderUserListFlower(user_id));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Order> orderUserListGift(int page,int page_size,int user_id){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(orderMapper.orderUserListGift(user_id));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderUserDelete(int user_id){
|
||||||
|
return orderMapper.orderUserDelete(user_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderUserPay(int user_id){
|
||||||
|
return orderMapper.orderUserPay(user_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderUserSend(int user_id){
|
||||||
|
return orderMapper.orderUserSend(user_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int orderUserReceive(int user_id){
|
||||||
|
return orderMapper.orderUserReceive(user_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
//订单统计相关
|
||||||
|
@Override
|
||||||
|
public int order_pay_num(){
|
||||||
|
return orderMapper.order_pay_num();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int order_ok_num(){
|
||||||
|
return orderMapper.order_ok_num();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public double order_today_money(){
|
||||||
|
return orderMapper.order_today_money();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public double order_month_money(){
|
||||||
|
return orderMapper.order_month_money();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int order_delivery_num(){
|
||||||
|
return orderMapper.order_delivery_num();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int order_refund_num(){
|
||||||
|
return orderMapper.order_refund_num();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public double order_month_line(String month){
|
||||||
|
return orderMapper.order_month_line(month);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<Rank> order_flower_top3(){
|
||||||
|
return orderMapper.order_flower_top3();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<Rank> order_class_rank(){
|
||||||
|
return orderMapper.order_class_rank();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Pack;
|
||||||
|
import com.example.flower.mapper.PackMapper;
|
||||||
|
import com.example.flower.service.impl.PackServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class PackService implements PackServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private PackMapper packMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<Pack> packList(int page, int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(packMapper.packList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Pack> packListByQuery(int page,int page_size,String pack_name){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(packMapper.packListByQuery(pack_name));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void packAdd(Pack pack){
|
||||||
|
packMapper.packAdd(pack);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int packDeletePer(int pack_id){
|
||||||
|
return packMapper.packDeletePer(pack_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int packDeleteMul(int[] pack_ids){
|
||||||
|
return packMapper.packDeleteMul(pack_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Pack packInfo(int pack_id){
|
||||||
|
return packMapper.packInfo(pack_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int packModify(Pack pack){
|
||||||
|
return packMapper.packModify(pack);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Staff;
|
||||||
|
import com.example.flower.mapper.StaffMapper;
|
||||||
|
import com.example.flower.service.impl.StaffServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class StaffService implements StaffServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private StaffMapper staffMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Staff staffLogin(String staff_name){
|
||||||
|
return staffMapper.staffLogin(staff_name);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Staff> staffList(int page, int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(staffMapper.staffList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<Staff> staffListByQuery(int page,int page_size,String staff_name){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(staffMapper.staffListByQuery(staff_name));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void staffAdd(Staff staff){
|
||||||
|
staffMapper.staffAdd(staff);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int staffDeletePer(int staff_id){
|
||||||
|
return staffMapper.staffDeletePer(staff_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int staffDeleteMul(int[] staff_ids){
|
||||||
|
return staffMapper.staffDeleteMul(staff_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Staff staffInfo(int staff_id){
|
||||||
|
return staffMapper.staffInfo(staff_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int staffModify(Staff staff){
|
||||||
|
return staffMapper.staffModify(staff);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int staffModifyState(int staff_id,int staff_state){
|
||||||
|
return staffMapper.staffModifyState(staff_id, staff_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
package com.example.flower.service;
|
||||||
|
|
||||||
|
import com.example.flower.entity.User;
|
||||||
|
import com.example.flower.mapper.UserMapper;
|
||||||
|
import com.example.flower.service.impl.UserServiceImpl;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class UserService implements UserServiceImpl {
|
||||||
|
@Resource
|
||||||
|
private UserMapper userMapper;
|
||||||
|
@Override
|
||||||
|
public PageInfo<User> userList(int page,int page_size) {
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(userMapper.userList());
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public PageInfo<User> userListByQuery(int page,int page_size,String user_name){
|
||||||
|
PageHelper.startPage(page,page_size);
|
||||||
|
return new PageInfo<>(userMapper.userListByQuery(user_name));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int userDeletePer(int user_id){
|
||||||
|
return userMapper.userDeletePer(user_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int userDeleteMul(int[] user_ids){
|
||||||
|
return userMapper.userDeleteMul(user_ids);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int userModifyState(int user_id,int user_state){
|
||||||
|
return userMapper.userModifyState(user_id,user_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
//前台
|
||||||
|
@Override
|
||||||
|
public User userLogin(String user_name){
|
||||||
|
return userMapper.userLogin(user_name);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void userRegister(User user){
|
||||||
|
userMapper.userRegister(user);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public User findByName(String user_name){
|
||||||
|
return userMapper.findByName(user_name);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public User userInfo(int user_id){
|
||||||
|
return userMapper.userInfo(user_id);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int userModify(User user){
|
||||||
|
return userMapper.userModify(user);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int userModifyMember(User user){
|
||||||
|
return userMapper.userModifyMember(user);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int userModifyPoint(User user){
|
||||||
|
return userMapper.userModifyPoint(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Address;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface AddressServiceImpl {
|
||||||
|
PageInfo<Address> addressList(int page, int page_size,int user_id);
|
||||||
|
void addressAdd(Address address);
|
||||||
|
int addressDeletePer(int address_id);
|
||||||
|
int addressDeleteMul(int[] address_ids);
|
||||||
|
Address addressInfo(int address_id);
|
||||||
|
int addressModify(Address address);
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Cart;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface CartServiceImpl {
|
||||||
|
PageInfo<Cart> cartList(int page, int page_size,int user_id);
|
||||||
|
PageInfo<Cart> cartListByQuery(int page,int page_size,int user_id,String flower_name);
|
||||||
|
void cartAdd(Cart cart);
|
||||||
|
int cartDeletePer(int cart_id);
|
||||||
|
int cartDeleteMul(int[] cart_ids);
|
||||||
|
Cart cartInfo(int cart_id);
|
||||||
|
int cartModify(Cart cart);
|
||||||
|
int cartModify_num(Cart cart);
|
||||||
|
List<Cart> cartRepeat(int user_id, int flower_id);
|
||||||
|
int cartNum(int user_id);
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Class;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface ClassServiceImpl {
|
||||||
|
PageInfo<Class> classList(int page, int page_size);
|
||||||
|
PageInfo<Class> classListByQuery(int page,int page_size,String class_name);
|
||||||
|
void classAdd(Class c);
|
||||||
|
int classDeletePer(int class_id);
|
||||||
|
int classDeleteMul(int[] class_ids);
|
||||||
|
Class classInfo(int class_id);
|
||||||
|
int classModify(Class c);
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Comment;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface CommentServiceImpl {
|
||||||
|
PageInfo<Comment> commentList(int page, int page_size,int flower_id);
|
||||||
|
void commentAdd(Comment comment);
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Discount;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface DiscountServiceImpl {
|
||||||
|
PageInfo<Discount> discountList(int page, int page_size);
|
||||||
|
PageInfo<Discount> discountListByQuery(int page,int page_size,String discount_name);
|
||||||
|
void discountAdd(Discount discount);
|
||||||
|
int discountDeletePer(int discount_id);
|
||||||
|
int discountDeleteMul(int[] discount_ids);
|
||||||
|
Discount discountInfo(int discount_id);
|
||||||
|
int discountModify(Discount discount);
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Flower;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface FlowerServiceImpl {
|
||||||
|
PageInfo<Flower> flowerList(int page, int page_size);
|
||||||
|
PageInfo<Flower> flowerListByQuery(int page,int page_size,String flower_name);
|
||||||
|
void flowerAdd(Flower flower);
|
||||||
|
int flowerDeletePer(int flower_id);
|
||||||
|
int flowerDeleteMul(int[] flower_ids);
|
||||||
|
Flower flowerInfo(int flower_id);
|
||||||
|
int flowerModify(Flower flower);
|
||||||
|
//前台
|
||||||
|
List<Flower> flowerRecommend(int class_id);
|
||||||
|
int flowerAddNum(int flower_id,int flower_sale);
|
||||||
|
|
||||||
|
//猜你喜欢
|
||||||
|
List<Flower> recommend(int user_id);
|
||||||
|
// List<Flower> getRandomFlower(int num);
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Gift;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface GiftServiceImpl {
|
||||||
|
PageInfo<Gift> giftList(int page, int page_size);
|
||||||
|
PageInfo<Gift> giftListByQuery(int page,int page_size,String gift_name);
|
||||||
|
void giftAdd(Gift gift);
|
||||||
|
int giftDeletePer(int gift_id);
|
||||||
|
int giftDeleteMul(int[] gift_ids);
|
||||||
|
Gift giftInfo(int gift_id);
|
||||||
|
int giftModify(Gift gift);
|
||||||
|
int giftModifyStock(int gift_id,int gift_stock);
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Member;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface MemberServiceImpl {
|
||||||
|
PageInfo<Member> memberHistory(int page, int page_size,int user_id);
|
||||||
|
void memberCharge(Member member);
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Notice;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface NoticeServiceImpl {
|
||||||
|
PageInfo<Notice> noticeList(int page, int page_size);
|
||||||
|
PageInfo<Notice> noticeListByQuery(int page,int page_size,String notice_content);
|
||||||
|
void noticeAdd(Notice notice);
|
||||||
|
int noticeDeletePer(int notice_id);
|
||||||
|
int noticeDeleteMul(int[] notice_ids);
|
||||||
|
Notice noticeInfo(int notice_id);
|
||||||
|
int noticeModify(Notice notice);
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Order;
|
||||||
|
import com.example.flower.entity.Order_Detail_Flower;
|
||||||
|
import com.example.flower.entity.Order_Detail_Gift;
|
||||||
|
import com.example.flower.entity.Rank;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface OrderServiceImpl {
|
||||||
|
PageInfo<Order> orderList(int page, int page_size);
|
||||||
|
PageInfo<Order> orderListByQuery(int page,int page_size,int order_id);
|
||||||
|
int orderAdd(Order order);
|
||||||
|
int orderAdd_flower(Order_Detail_Flower order_detail_flower);
|
||||||
|
int orderAdd_gift(Order_Detail_Gift order_detail_gift);
|
||||||
|
int orderDeletePer(int order_id);
|
||||||
|
int orderDeleteMul(int[] order_ids);
|
||||||
|
int orderModify(int order_id,int order_state,String time,String order_delivery_number);
|
||||||
|
Order orderInfo(int order_id);
|
||||||
|
List<Order_Detail_Flower> orderDetailFlower(int order_id);
|
||||||
|
List<Order_Detail_Gift> orderDetailGift(int order_id);
|
||||||
|
|
||||||
|
//前台
|
||||||
|
PageInfo<Order> orderUserListFlower(int page, int page_size,int user_id);
|
||||||
|
PageInfo<Order> orderUserListGift(int page, int page_size,int user_id);
|
||||||
|
int orderUserDelete(int user_id);
|
||||||
|
int orderUserPay(int user_id);
|
||||||
|
int orderUserSend(int user_id);
|
||||||
|
int orderUserReceive(int user_id);
|
||||||
|
|
||||||
|
//订单统计相关
|
||||||
|
int order_pay_num();
|
||||||
|
int order_ok_num();
|
||||||
|
double order_today_money();
|
||||||
|
double order_month_money();
|
||||||
|
int order_delivery_num();
|
||||||
|
int order_refund_num();
|
||||||
|
double order_month_line(String month);
|
||||||
|
List<Rank> order_flower_top3();
|
||||||
|
List<Rank> order_class_rank();
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Pack;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface PackServiceImpl {
|
||||||
|
PageInfo<Pack> packList(int page, int page_size);
|
||||||
|
PageInfo<Pack> packListByQuery(int page,int page_size,String pack_name);
|
||||||
|
void packAdd(Pack staff);
|
||||||
|
int packDeletePer(int pack_id);
|
||||||
|
int packDeleteMul(int[] pack_ids);
|
||||||
|
Pack packInfo(int pack_id);
|
||||||
|
int packModify(Pack pack);
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.Staff;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface StaffServiceImpl {
|
||||||
|
Staff staffLogin(String staff_name);
|
||||||
|
PageInfo<Staff> staffList(int page, int page_size);
|
||||||
|
PageInfo<Staff> staffListByQuery(int page,int page_size,String staff_name);
|
||||||
|
void staffAdd(Staff staff);
|
||||||
|
int staffDeletePer(int staff_id);
|
||||||
|
int staffDeleteMul(int[] staff_ids);
|
||||||
|
Staff staffInfo(int staff_id);
|
||||||
|
int staffModify(Staff staff);
|
||||||
|
int staffModifyState(int staff_id,int staff_state);
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package com.example.flower.service.impl;
|
||||||
|
|
||||||
|
import com.example.flower.entity.User;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface UserServiceImpl {
|
||||||
|
PageInfo<User> userList(int page,int page_size);
|
||||||
|
|
||||||
|
//后台
|
||||||
|
PageInfo<User> userListByQuery(int page,int page_size,String user_name);
|
||||||
|
int userDeletePer(int user_id);
|
||||||
|
int userDeleteMul(int[] user_ids);
|
||||||
|
int userModifyState(int user_id,int user_state);
|
||||||
|
|
||||||
|
//前台
|
||||||
|
User userLogin(String user_name);
|
||||||
|
void userRegister(User user);
|
||||||
|
|
||||||
|
User findByName(String user_name);
|
||||||
|
User userInfo(int user_id);
|
||||||
|
int userModify(User user);
|
||||||
|
int userModifyMember(User user);
|
||||||
|
int userModifyPoint(User user);
|
||||||
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
package com.example.flower.unit;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.auth0.jwt.JWT;
|
||||||
|
import io.jsonwebtoken.*;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class JWTUtil {
|
||||||
|
private static long time = 1000*60*60*24;
|
||||||
|
private static String signature = "flower";
|
||||||
|
//创建token(示例)
|
||||||
|
public static String createToken(int id,int role){
|
||||||
|
JwtBuilder jwtBuilder = Jwts.builder();
|
||||||
|
String jwtToken = jwtBuilder
|
||||||
|
//header
|
||||||
|
.setHeaderParam("typ","JWT")
|
||||||
|
.setHeaderParam("alg","HS256")
|
||||||
|
//payload
|
||||||
|
.claim("id",id)
|
||||||
|
.claim("role",role)
|
||||||
|
.setSubject("admin-test")
|
||||||
|
.setExpiration(new Date(System.currentTimeMillis()+time))
|
||||||
|
.setId(UUID.randomUUID().toString())
|
||||||
|
//signature
|
||||||
|
.signWith(SignatureAlgorithm.HS256,signature)
|
||||||
|
.compact();
|
||||||
|
return jwtToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
//检查token是否有效
|
||||||
|
public static boolean checkToken(String token){
|
||||||
|
if(token == null){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Jwts.parser().setSigningKey(signature).parseClaimsJws(token);
|
||||||
|
}catch (ExpiredJwtException e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//token认证失败
|
||||||
|
public static void checkTokenFailed(JSONObject jsonObject){
|
||||||
|
jsonObject.put("code",401 );
|
||||||
|
jsonObject.put("msg","token认证异常!" );
|
||||||
|
jsonObject.put("data",null );
|
||||||
|
}
|
||||||
|
|
||||||
|
//解析token,获取body信息
|
||||||
|
public static Claims getBodyByToken(String token){
|
||||||
|
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(signature).parseClaimsJws(token);
|
||||||
|
return claimsJws.getBody();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,188 @@
|
|||||||
|
package com.example.flower.unit;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
public class MenuList { //菜单权限功能
|
||||||
|
public static JSONObject[] setMenu(JSONObject[] j ,int role){
|
||||||
|
if(role==1){ //店长可以获得所有菜单的权限
|
||||||
|
//统计信息
|
||||||
|
j[0] = new JSONObject();
|
||||||
|
j[0].put("path","/statistic");
|
||||||
|
j[0].put("name","statistic");
|
||||||
|
j[0].put("label","统计信息");
|
||||||
|
j[0].put("icon","el-icon-data-line");
|
||||||
|
j[0].put("url","statisticView.vue");
|
||||||
|
|
||||||
|
//人员管理
|
||||||
|
JSONObject[] children1 = new JSONObject[2];
|
||||||
|
children1[0] = new JSONObject();
|
||||||
|
children1[0].put("path","/user");
|
||||||
|
children1[0].put("name","user");
|
||||||
|
children1[0].put("label","用户管理");
|
||||||
|
children1[0].put("icon","el-icon-user-solid");
|
||||||
|
children1[0].put("url","userView.vue");
|
||||||
|
|
||||||
|
children1[1] = new JSONObject();
|
||||||
|
children1[1].put("path","/staff");
|
||||||
|
children1[1].put("name","staff");
|
||||||
|
children1[1].put("label","员工管理");
|
||||||
|
children1[1].put("icon","el-icon-s-custom");
|
||||||
|
children1[1].put("url","staffView.vue");
|
||||||
|
|
||||||
|
j[1] = new JSONObject();
|
||||||
|
j[1].put("label","人员管理");
|
||||||
|
j[1].put("icon","el-icon-user");
|
||||||
|
j[1].put("children",children1);
|
||||||
|
|
||||||
|
//商品管理
|
||||||
|
JSONObject[] children2 = new JSONObject[3];
|
||||||
|
children2[0] = new JSONObject();
|
||||||
|
children2[0].put("path","/class");
|
||||||
|
children2[0].put("name","class");
|
||||||
|
children2[0].put("label","类别管理");
|
||||||
|
children2[0].put("icon","el-icon-menu");
|
||||||
|
children2[0].put("url","classView.vue");
|
||||||
|
|
||||||
|
children2[1] = new JSONObject();
|
||||||
|
children2[1].put("path","/flower");
|
||||||
|
children2[1].put("name","flower");
|
||||||
|
children2[1].put("label","花卉管理");
|
||||||
|
children2[1].put("icon","el-icon-star-on");
|
||||||
|
children2[1].put("url","flowerView.vue");
|
||||||
|
|
||||||
|
children2[2] = new JSONObject();
|
||||||
|
children2[2].put("path","/pack");
|
||||||
|
children2[2].put("name","pack");
|
||||||
|
children2[2].put("label","花材管理");
|
||||||
|
children2[2].put("icon","el-icon-s-shop");
|
||||||
|
children2[2].put("url","packView.vue");
|
||||||
|
|
||||||
|
j[2] = new JSONObject();
|
||||||
|
j[2].put("label","商品管理");
|
||||||
|
j[2].put("icon","el-icon-box");
|
||||||
|
j[2].put("children",children2);
|
||||||
|
|
||||||
|
//订单管理
|
||||||
|
j[3] = new JSONObject();
|
||||||
|
j[3].put("path","/order");
|
||||||
|
j[3].put("name","order");
|
||||||
|
j[3].put("label","订单管理");
|
||||||
|
j[3].put("icon","el-icon-document");
|
||||||
|
j[3].put("url","orderView.vue");
|
||||||
|
|
||||||
|
//套餐管理
|
||||||
|
j[4] = new JSONObject();
|
||||||
|
j[4].put("path","/discount");
|
||||||
|
j[4].put("name","discount");
|
||||||
|
j[4].put("label","套餐管理");
|
||||||
|
j[4].put("icon","el-icon-shopping-bag-1");
|
||||||
|
j[4].put("url","discountView.vue");
|
||||||
|
|
||||||
|
//发布公告
|
||||||
|
j[5] = new JSONObject();
|
||||||
|
j[5].put("path","/notice");
|
||||||
|
j[5].put("name","notice");
|
||||||
|
j[5].put("label","发布公告");
|
||||||
|
j[5].put("icon","el-icon-news");
|
||||||
|
j[5].put("url","noticeView.vue");
|
||||||
|
|
||||||
|
//换赠设置
|
||||||
|
j[6] = new JSONObject();
|
||||||
|
j[6].put("path","/gift");
|
||||||
|
j[6].put("name","gift");
|
||||||
|
j[6].put("label","换赠设置");
|
||||||
|
j[6].put("icon","el-icon-present");
|
||||||
|
j[6].put("url","giftView.vue");
|
||||||
|
|
||||||
|
//聊天室
|
||||||
|
j[7] = new JSONObject();
|
||||||
|
j[7].put("path","/chat");
|
||||||
|
j[7].put("name","chat");
|
||||||
|
j[7].put("label","聊 天 室");
|
||||||
|
j[7].put("icon","el-icon-chat-dot-round");
|
||||||
|
j[7].put("url","chatView.vue");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(role==0){ //员工菜单
|
||||||
|
//统计信息
|
||||||
|
j[0] = new JSONObject();
|
||||||
|
j[0].put("path","/statistic");
|
||||||
|
j[0].put("name","statistic");
|
||||||
|
j[0].put("label","统计信息");
|
||||||
|
j[0].put("icon","el-icon-data-line");
|
||||||
|
j[0].put("url","statisticView.vue");
|
||||||
|
|
||||||
|
|
||||||
|
//商品管理
|
||||||
|
JSONObject[] children3 = new JSONObject[3];
|
||||||
|
children3[0] = new JSONObject();
|
||||||
|
children3[0].put("path","/class");
|
||||||
|
children3[0].put("name","class");
|
||||||
|
children3[0].put("label","类别管理");
|
||||||
|
children3[0].put("icon","el-icon-menu");
|
||||||
|
children3[0].put("url","classView.vue");
|
||||||
|
|
||||||
|
children3[1] = new JSONObject();
|
||||||
|
children3[1].put("path","/flower");
|
||||||
|
children3[1].put("name","flower");
|
||||||
|
children3[1].put("label","花卉管理");
|
||||||
|
children3[1].put("icon","el-icon-star-on");
|
||||||
|
children3[1].put("url","flowerView.vue");
|
||||||
|
|
||||||
|
children3[2] = new JSONObject();
|
||||||
|
children3[2].put("path","/pack");
|
||||||
|
children3[2].put("name","pack");
|
||||||
|
children3[2].put("label","花材管理");
|
||||||
|
children3[2].put("icon","el-icon-s-shop");
|
||||||
|
children3[2].put("url","packView.vue");
|
||||||
|
|
||||||
|
j[1] = new JSONObject();
|
||||||
|
j[1].put("label","商品管理");
|
||||||
|
j[1].put("icon","el-icon-box");
|
||||||
|
j[1].put("children",children3);
|
||||||
|
|
||||||
|
//订单管理
|
||||||
|
j[2] = new JSONObject();
|
||||||
|
j[2].put("path","/order");
|
||||||
|
j[2].put("name","order");
|
||||||
|
j[2].put("label","订单管理");
|
||||||
|
j[2].put("icon","el-icon-document");
|
||||||
|
j[2].put("url","orderView.vue");
|
||||||
|
|
||||||
|
//套餐管理
|
||||||
|
j[3] = new JSONObject();
|
||||||
|
j[3].put("path","/discount");
|
||||||
|
j[3].put("name","discount");
|
||||||
|
j[3].put("label","套餐管理");
|
||||||
|
j[3].put("icon","el-icon-shopping-bag-1");
|
||||||
|
j[3].put("url","discountView.vue");
|
||||||
|
|
||||||
|
//发布公告
|
||||||
|
j[4] = new JSONObject();
|
||||||
|
j[4].put("path","/notice");
|
||||||
|
j[4].put("name","notice");
|
||||||
|
j[4].put("label","发布公告");
|
||||||
|
j[4].put("icon","el-icon-news");
|
||||||
|
j[4].put("url","noticeView.vue");
|
||||||
|
|
||||||
|
//换赠设置
|
||||||
|
j[5] = new JSONObject();
|
||||||
|
j[5].put("path","/gift");
|
||||||
|
j[5].put("name","gift");
|
||||||
|
j[5].put("label","换赠设置");
|
||||||
|
j[5].put("icon","el-icon-present");
|
||||||
|
j[5].put("url","giftView.vue");
|
||||||
|
|
||||||
|
//聊天室
|
||||||
|
j[6] = new JSONObject();
|
||||||
|
j[6].put("path","/chat");
|
||||||
|
j[6].put("name","chat");
|
||||||
|
j[6].put("label","聊 天 室");
|
||||||
|
j[6].put("icon","el-icon-chat-dot-round");
|
||||||
|
j[6].put("url","chatView.vue");
|
||||||
|
}
|
||||||
|
|
||||||
|
return j;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.example.flower.unit;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.example.flower.entity.RelateDTO;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class UserCF {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 方法描述: 推荐商品id列表
|
||||||
|
*
|
||||||
|
* @param userId 当前用户
|
||||||
|
* @param list 用户商品评分数据
|
||||||
|
* @return {@link List<Integer>}
|
||||||
|
*/
|
||||||
|
public static List<Integer> recommend(Integer userId, List<RelateDTO> list) {
|
||||||
|
// 按用户分组
|
||||||
|
Map<Integer, List<RelateDTO>> userMap = list.stream().collect(Collectors.groupingBy(RelateDTO::getUseId));
|
||||||
|
// 获取其他用户与当前用户的关系值
|
||||||
|
Map<Integer, Double> userDisMap = CoreMath.computeNeighbor(userId, userMap, 0);
|
||||||
|
if (CollectionUtil.isEmpty(userDisMap)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
// 获取关系最近的用户
|
||||||
|
double maxValue = Collections.max(userDisMap.values());
|
||||||
|
Set<Integer> userIds = userDisMap.entrySet().stream().filter(e -> e.getValue() == maxValue).map(Map.Entry::getKey).collect(Collectors.toSet());
|
||||||
|
// 取关系最近的用户
|
||||||
|
Integer nearestUserId = userIds.stream().findAny().orElse(null);
|
||||||
|
if (nearestUserId == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
// 最近邻用户看过商品列表
|
||||||
|
List<Integer> neighborItems = userMap.get(nearestUserId).stream().map(RelateDTO::getGoodsId).collect(Collectors.toList());
|
||||||
|
// 指定用户看过商品列表
|
||||||
|
List<Integer> userItems = userMap.get(userId).stream().map(RelateDTO::getGoodsId).collect(Collectors.toList());
|
||||||
|
// 找到最近邻看过,但是该用户没看过的商品
|
||||||
|
neighborItems.removeAll(userItems);
|
||||||
|
return neighborItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Binary file not shown.
Loading…
Reference in new issue