|
@@ -0,0 +1,119 @@
|
|
|
+package com.huimv.wine.ws.admin;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.huimv.wine.common.EventWsErrUtil;
|
|
|
+import com.huimv.wine.entity.Manager;
|
|
|
+import com.huimv.wine.entity.Operation;
|
|
|
+import com.huimv.wine.entity.Worker;
|
|
|
+import com.huimv.wine.entity.vo.*;
|
|
|
+import com.huimv.wine.mapper.OperationMapper;
|
|
|
+import com.huimv.wine.mapper.WorkerMapper;
|
|
|
+import com.huimv.wine.utils.*;
|
|
|
+import lombok.Data;
|
|
|
+
|
|
|
+import javax.websocket.Session;
|
|
|
+import java.security.NoSuchAlgorithmException;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Data
|
|
|
+public class AdminWorker {
|
|
|
+ public void handle(JSONObject message, Session session, Manager manager) throws NoSuchAlgorithmException {
|
|
|
+ String event = message.getString("event");
|
|
|
+ JSONObject data = message.getJSONObject("data");
|
|
|
+ WorkerMapper workerMapper = SpringContextUtil.getBean(WorkerMapper.class);
|
|
|
+ OperationMapper operationMapper = SpringContextUtil.getBean(OperationMapper.class);
|
|
|
+ switch (event) {
|
|
|
+ case "adminWorkerQuery":
|
|
|
+ query(session, manager, data, workerMapper);
|
|
|
+ break;
|
|
|
+ case "adminWorkerUpdate":
|
|
|
+ update(session, manager, data, workerMapper, operationMapper);
|
|
|
+ break;
|
|
|
+ case "adminWorkerDelete":
|
|
|
+ remove(session, manager, message.getJSONArray("data"),workerMapper,operationMapper);
|
|
|
+ break;
|
|
|
+ case "adminWorkerAdd":
|
|
|
+ add(session, manager, data,workerMapper,operationMapper);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ WsEvent wsEvent = EventWsErrUtil.getWsErr("unrecognized event");
|
|
|
+ WebsocketManagerUtil.sendMessage(session, wsEvent);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void query(Session session, Manager manager, JSONObject data, WorkerMapper workerMapper) {
|
|
|
+ AdminWorkerQueryParam queryParam = JSONObject.toJavaObject(data, AdminWorkerQueryParam.class);
|
|
|
+ String like = "%" + queryParam.getCond() + "%";
|
|
|
+ Page<WorkerQueryForAdminResult> page = new Page<>(queryParam.getPage(),queryParam.getLimit());
|
|
|
+ Page<WorkerQueryForAdminResult> resultPage = workerMapper.workerQueryForAdmin(page,manager.getId(),like);
|
|
|
+ WsEvent wsEvent = new WsEvent("adminWorkerQueryRes", Result.success(resultPage));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void update(Session session, Manager manager, JSONObject data, WorkerMapper workerMapper, OperationMapper operationMapper) throws NoSuchAlgorithmException {
|
|
|
+ AdminWorkerUpdateParam updateParam = JSONObject.toJavaObject(data, AdminWorkerUpdateParam.class);
|
|
|
+ if (ObjectUtil.isEmpty(updateParam.getPhone())){
|
|
|
+ WsEvent wsEvent = new WsEvent("adminWorkerUpdateRes", Result.fail("联系电话不可为空"));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Worker worker = workerMapper.selectById(updateParam.getId());
|
|
|
+ if (ObjectUtil.isEmpty(worker)){
|
|
|
+ WsEvent wsEvent = new WsEvent("adminWorkerUpdateRes", Result.fail("更新失败 01"));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String password = updateParam.getPassword();
|
|
|
+ if (ObjectUtil.isNotEmpty(password)){
|
|
|
+ String serverPrivate = KeyUtil.getServerPrivate();
|
|
|
+ String realPassword = RSAUtil.decrypt1(password, serverPrivate);
|
|
|
+ worker.setPassword(Utils.hashPassword(realPassword));
|
|
|
+ }
|
|
|
+ if (workerMapper.updateById(worker) != 1) {
|
|
|
+ WsEvent wsEvent = new WsEvent("adminWorkerUpdateRes", Result.fail("更新失败 02"));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ WsEvent wsEvent = new WsEvent("adminWorkerUpdateRes", Result.success(null));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+
|
|
|
+ Operation operation = new Operation(0,manager.getId(),1,0,"修改上酒工信息");
|
|
|
+ operationMapper.insert(operation);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void remove(Session session, Manager manager, JSONArray data, WorkerMapper workerMapper, OperationMapper operationMapper) {
|
|
|
+ List<String> ids = data.toJavaList(String.class);
|
|
|
+ workerMapper.deleteBatchIds(ids);
|
|
|
+ WsEvent wsEvent = new WsEvent("adminWorkerUpdateRes", Result.success(null));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ Operation operation = new Operation(0,manager.getId(),2,0,"删除上酒工");
|
|
|
+ operationMapper.insert(operation);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void add(Session session, Manager manager, JSONObject data, WorkerMapper workerMapper, OperationMapper operationMapper) throws NoSuchAlgorithmException {
|
|
|
+ AdminWorkerAddParam addParam = JSONObject.toJavaObject(data, AdminWorkerAddParam.class);
|
|
|
+ if (ObjectUtil.isEmpty(addParam.getName()) || ObjectUtil.isEmpty(addParam.getPhone()) || ObjectUtil.isEmpty(addParam.getPassword())){
|
|
|
+ WsEvent wsEvent = new WsEvent("adminWorkerAddRes", Result.fail("数据不可为空"));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String serverPrivate = KeyUtil.getServerPrivate();
|
|
|
+ String realPassword = RSAUtil.decrypt1(addParam.getPassword(), serverPrivate);
|
|
|
+ Worker worker = new Worker();
|
|
|
+ worker.setId(Utils.randomString(16));
|
|
|
+ worker.setName(addParam.getName());
|
|
|
+ worker.setPhone(addParam.getPhone());
|
|
|
+ worker.setPassword(Utils.hashPassword(realPassword));
|
|
|
+ worker.setManager(manager.getId());
|
|
|
+ workerMapper.insert(worker);
|
|
|
+
|
|
|
+ WsEvent wsEvent = new WsEvent("adminWorkerUpdateRes", Result.success(null));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ Operation operation = new Operation(0,manager.getId(),0,0,"新增上酒工");
|
|
|
+ operationMapper.insert(operation);
|
|
|
+ }
|
|
|
+}
|