1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| package com.talentcard.server.business.admin;
| import com.talentcard.server.business.DatabaseRows;
| import com.talentcard.server.business.merchant.auth.MerchantPasswordHasher;
| import com.talentcard.server.common.*;
| import org.springframework.jdbc.core.JdbcTemplate;
| import org.springframework.stereotype.Service;
| import org.springframework.transaction.annotation.Transactional;
| import java.util.*;
|
| @Service public class AdminManagementService {
| private final JdbcTemplate jdbc; public AdminManagementService(JdbcTemplate jdbc) { this.jdbc=jdbc; }
| public Map<String,Object> settings() { Map<String,Object> result=new LinkedHashMap<>(); for(Map<String,Object> row: rows("select setting_key, setting_value from admin_setting")) result.put(String.valueOf(row.get("settingKey")), row.get("settingValue")); return result; }
| @Transactional public Map<String,Object> saveSettings(Map<String,String> body) { for(String key: List.of("bookstoreDiscount","hotelSubsidy","homeVideoUrl","miniProgramUrl")) jdbc.update("insert into admin_setting(setting_key, setting_value) values (?, ?) on duplicate key update setting_value = values(setting_value)",key,body.getOrDefault(key,"")); return settings(); }
| public List<Map<String,Object>> roles() { return rows("select id, role_name, role_code, remark, status, created_at from admin_role order by id"); }
| @Transactional public Map<String,Object> createRole(AdminRoleRequest r) { jdbc.update("insert into admin_role(role_name,role_code,remark,status) values (?,?,?,?)",r.roleName().trim(),r.roleCode().trim(),r.remark(),r.status()); return one("select id, role_name, role_code, remark, status, created_at from admin_role where id=last_insert_id()"); }
| @Transactional public Map<String,Object> updateRole(Long id, AdminRoleRequest r) { if(jdbc.update("update admin_role set role_name=?,role_code=?,remark=?,status=? where id=?",r.roleName().trim(),r.roleCode().trim(),r.remark(),r.status(),id)==0) throw new BusinessException(ErrorCode.NOT_FOUND,"角色不存在"); return one("select id, role_name, role_code, remark, status, created_at from admin_role where id=?",id); }
| public List<Map<String,Object>> staff() { return rows("select id,account,display_name,role_code,status,created_at from admin_operator where deleted=0 order by id"); }
| @Transactional public Map<String,Object> createStaff(AdminStaffRequest r) { if(r.password()==null||r.password().isBlank()) throw new BusinessException(ErrorCode.BAD_REQUEST,"新建员工必须设置登录密码"); jdbc.update("insert into admin_operator(account,password_hash,display_name,role_code,status) values (?,?,?,?,?)",r.account().trim(),MerchantPasswordHasher.encode(r.password()),r.displayName().trim(),r.roleCode(),r.status()); return one("select id,account,display_name,role_code,status,created_at from admin_operator where id=last_insert_id()"); }
| @Transactional public Map<String,Object> updateStaff(Long id, AdminStaffRequest r) { String sql=(r.password()==null||r.password().isBlank())?"update admin_operator set account=?,display_name=?,role_code=?,status=? where id=?":"update admin_operator set account=?,password_hash=?,display_name=?,role_code=?,status=? where id=?"; int n=(r.password()==null||r.password().isBlank())?jdbc.update(sql,r.account().trim(),r.displayName().trim(),r.roleCode(),r.status(),id):jdbc.update(sql,r.account().trim(),MerchantPasswordHasher.encode(r.password()),r.displayName().trim(),r.roleCode(),r.status(),id); if(n==0) throw new BusinessException(ErrorCode.NOT_FOUND,"员工不存在"); return one("select id,account,display_name,role_code,status,created_at from admin_operator where id=?",id); }
| private List<Map<String,Object>> rows(String sql,Object...args){return DatabaseRows.normalize(jdbc.queryForList(sql,args));} private Map<String,Object> one(String sql,Object...args){List<Map<String,Object>> r=rows(sql,args);if(r.isEmpty())throw new BusinessException(ErrorCode.NOT_FOUND,"记录不存在");return r.get(0);}
| }
|
|