From 4bfd0a9d0f6f32078b46454a071e7a4ca9ede650 Mon Sep 17 00:00:00 2001
From: "382696293@qq.com" <382696293@qq.com>
Date: Tue, 23 Jan 2024 14:44:22 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F-=E7=BB=91=E5=AE=9A?=
=?UTF-8?q?=E4=BB=AA=E5=99=A8=E4=BC=98=E5=8C=96=E5=92=8C=E6=8D=A2=E7=BB=91?=
=?UTF-8?q?=E4=BB=AA=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../core/mapper/WxInstrumentSerialMapper.java | 2 +
.../mapper/WxInstrumentSerialMapper.xml | 16 +++
.../controller/WxInstrumenController.java | 18 ---
.../controller/WxInstrumentController.java | 22 +++-
.../service/IWxInstrumentService.java | 2 +
.../service/impl/WxInstrumentServiceImpl.java | 122 +++++++++++++++---
6 files changed, 143 insertions(+), 39 deletions(-)
delete mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxInstrumenController.java
diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxInstrumentSerialMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxInstrumentSerialMapper.java
index c2a18fd..41832a7 100644
--- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxInstrumentSerialMapper.java
+++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxInstrumentSerialMapper.java
@@ -75,4 +75,6 @@ public interface WxInstrumentSerialMapper
public int updateAll(WxInstrumentSerial wxInstrumentSerial);
WxInstrumentSerial selectEntityListBySerial(WxInstrumentSerial wxInstrumentSerial);
+
+ void updateBySerial(WxInstrumentSerial wxInstrumentSerial);
}
diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxInstrumentSerialMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxInstrumentSerialMapper.xml
index 1ca595c..7d39cf5 100644
--- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxInstrumentSerialMapper.xml
+++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxInstrumentSerialMapper.xml
@@ -107,6 +107,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
+
+ update wx_instrument_serial
+
+ instrument_id = #{instrumentId},
+ instrument_name = #{instrumentName},
+ `source` = #{source},
+ binding_status = #{bindingStatus},
+ valid_status = #{validStatus},
+ status = #{status},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ remark = #{remark},
+
+ where serial = #{serial}
+
+
update wx_instrument_serial
diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxInstrumenController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxInstrumenController.java
deleted file mode 100644
index 67a46fd..0000000
--- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxInstrumenController.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.flossom.miniProgram.controller;
-
-import com.flossom.common.core.web.controller.BaseController;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 仪器关联正品控产品名Controller
- *
- * @author flossom
- * @date 2024-01-15
- */
-@RestController
-@RequestMapping("/instrument")
-public class WxInstrumenController extends BaseController {
-
-
-}
diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxInstrumentController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxInstrumentController.java
index ee68547..1677139 100644
--- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxInstrumentController.java
+++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WxInstrumentController.java
@@ -1,12 +1,16 @@
package com.flossom.miniProgram.controller;
import com.flossom.common.core.domain.R;
+import com.flossom.common.core.exception.ServiceException;
+import com.flossom.common.core.utils.StringUtils;
import com.flossom.common.core.web.controller.BaseController;
import com.flossom.common.core.web.domain.AjaxResult;
import com.flossom.miniProgram.service.IWxInstrumentService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
/**
@@ -25,22 +29,30 @@ public class WxInstrumentController extends BaseController {
/**
* 根据序列号获取仪器信息
*
- * @return 当返回 null 时,需要页面跳转到联系客服
+ * @return 当返回 203 时,需要页面跳转到联系客服
*/
@GetMapping(value = "/getInstrumentInfoBySerial")
- public R getInstrumentInfoBySerial(@RequestParam("serial") @NotBlank(message = "序列号不能为空") String serial) {
+ public R getInstrumentInfoBySerial(@NotBlank(message = "序列号不能为空") @RequestParam("serial") String serial) {
return R.ok(wxInstrumentService.getInstrumentInfoBySerial(serial));
}
/**
* 用户、序列号与仪器绑定
- *
- * @return Boolean: ture 绑定成功,false 绑定失败
*/
@GetMapping(value = "/binding")
- public R binding(@RequestParam("serial") @NotBlank(message = "序列号不能为空") String serial) {
+ public R binding(@NotBlank(message = "序列号不能为空") @RequestParam("serial") String serial) {
wxInstrumentService.binding(serial);
return R.ok();
}
+ /**
+ * 换绑
+ */
+ @GetMapping(value = "/exchangeBinding")
+ public R exchangeBinding(@NotBlank(message = "序列号不能为空") @RequestParam("serial") String serial) {
+ wxInstrumentService.exchangeBinding(serial);
+ return R.ok();
+ }
+
+
}
diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxInstrumentService.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxInstrumentService.java
index b6e9747..2f25be1 100644
--- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxInstrumentService.java
+++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxInstrumentService.java
@@ -12,4 +12,6 @@ public interface IWxInstrumentService {
WxInstrumentSerial getInstrumentInfoBySerial(String serial);
void binding(String serial);
+
+ void exchangeBinding(String serial);
}
diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxInstrumentServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxInstrumentServiceImpl.java
index 7432d71..6acfde5 100644
--- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxInstrumentServiceImpl.java
+++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxInstrumentServiceImpl.java
@@ -4,6 +4,7 @@ import com.flossom.common.core.domain.entity.*;
import com.flossom.common.core.enums.BindingStatusEnums;
import com.flossom.common.core.enums.SerialValidStatusEnums;
import com.flossom.common.core.enums.Status;
+import com.flossom.common.core.exception.ServiceException;
import com.flossom.common.core.exception.ServiceReturnCodeException;
import com.flossom.common.core.mapper.*;
import com.flossom.common.core.utils.DateUtils;
@@ -42,9 +43,6 @@ public class WxInstrumentServiceImpl implements IWxInstrumentService {
@Autowired
private WxUserInstrumentMapper wxUserInstrumentMapper;
- @Autowired
- private WxInstrumentSerialLogMapper wxInstrumentSerialLogMapper;
-
@Autowired
private WxUserInstrumentLogMapper wxUserInstrumentLogMapper;
@@ -58,7 +56,6 @@ public class WxInstrumentServiceImpl implements IWxInstrumentService {
WxInstrumentSerial wxInstrumentSerial = wxInstrumentSerialMapper.selectEntityListBySerial(query);
// 序列号唯一
if (wxInstrumentSerial == null) {
- // 根据序列号没有找到对应的数据
logger.info("serial:{}, 没有对应的数据", serial);
throw new ServiceReturnCodeException("没有对应的序列号,跳转联系客服", 203);
}
@@ -86,22 +83,24 @@ public class WxInstrumentServiceImpl implements IWxInstrumentService {
WxUserInstrument userBindInstrumentQuery = new WxUserInstrument();
userBindInstrumentQuery.setUserId(wxUserMember.getId());
userBindInstrumentQuery.setInstrumentId(wxInstrumentSerial.getInstrumentId());
- userBindInstrumentQuery.setBindingStatus(BindingStatusEnums.BINDED.getCode());
userBindInstrumentQuery.setStatus(Status.OK.getCode().longValue());
List wxUserInstrumentList = wxUserInstrumentMapper.selectListByUserIdAndInstrumentId(userBindInstrumentQuery);
// 2.1、当前用户绑定了序列号对应的仪器的序列号
- if (wxUserInstrumentList != null && wxUserInstrumentList.size() > 0) {
+ if (wxUserInstrumentList != null) {
+ if (wxUserInstrumentList.size() != 1) {
+ logger.error("根据 用户id:{} 和 仪器id:{} 查询出来的数据为空或者数据量不止一条", wxUserMember.getId(), wxInstrumentSerial.getInstrumentId());
+ throw new ServiceException("绑定失败");
+ }
+ WxUserInstrument wxUserInstrument = wxUserInstrumentList.get(0);
/* 2.1.1、判断扫码获取的序列号和用户绑定的序列号是否一致 */
- for (WxUserInstrument userInstrument : wxUserInstrumentList) {
- if (StringUtils.equals(userInstrument.getSerial(), serial)) {
- // 相同序列号,页面重新发起查询用户拥有的仪器列表
- logger.info("相同序列号,页面重新发起查询用户拥有的仪器列表");
- throw new ServiceReturnCodeException("扫码的序列号已被当前用户绑定,请查询仪器列表", 200);
- }
+ if (StringUtils.equals(wxUserInstrument.getSerial(), serial)) {
+ logger.info("相同序列号,页面重新发起查询用户拥有的仪器列表");
+ throw new ServiceReturnCodeException("扫码的序列号已被当前用户绑定,请查询仪器列表", 200);
+ } else {
+ /* 2.1.2、绑定过仪器,但不是同一个序列号,询问是否需要换绑 */
+ logger.info("绑定过该类型仪器,但当前扫码不是以前绑定的仪器,询问是否换绑仪器");
+ throw new ServiceReturnCodeException("绑定过该类型仪器,但当前扫码不是以前绑定的仪器,询问是否换绑仪器", 202);
}
- /* 2.1.2、绑定过仪器,但不是同一个序列号,询问是否需要换绑 */
- logger.info("绑定过该类型仪器,但当前扫码不是以前绑定的仪器,询问是否换绑仪器");
- throw new ServiceReturnCodeException("绑定过该类型仪器,但当前扫码不是以前绑定的仪器,询问是否换绑仪器", 202);
}
// 2.2、用户没有绑定过序列号对应的仪器
else {
@@ -113,7 +112,6 @@ public class WxInstrumentServiceImpl implements IWxInstrumentService {
query.setBindingStatus(BindingStatusEnums.BINDED.getCode());
Integer num = wxUserInstrumentMapper.selectUiByInstrumentId(query);
if (num != null && num > 0) {
- // 被别人绑定了,页面跳转联系客服
logger.info("被别人绑定了,页面跳转联系客服");
throw new ServiceReturnCodeException("当前序列码被别人绑定了,页面跳转联系客服", 203);
}
@@ -161,4 +159,96 @@ public class WxInstrumentServiceImpl implements IWxInstrumentService {
}
}
}
+
+ @Override
+ @Transactional
+ public void exchangeBinding(String serial) {
+ WxUserMember wxUserMember = SecurityUtils.getLoginUser().getWxUserMember();
+ /* 1、获取序列号信息 */
+ WxInstrumentSerial newInstrumentSerial = getInstrumentInfoBySerial(serial);
+
+ /* 2、判断序列号是否被别人绑定了 */
+ WxUserInstrument query = new WxUserInstrument();
+ query.setUserId(wxUserMember.getId());
+ query.setSerial(serial);
+ query.setStatus(Status.OK.getCode().longValue());
+ query.setBindingStatus(BindingStatusEnums.BINDED.getCode());
+ Integer num = wxUserInstrumentMapper.selectUiByInstrumentId(query);
+ if (num != null && num > 0) {
+ logger.info("被别人绑定了,页面跳转联系客服");
+ throw new ServiceReturnCodeException("当前序列码被别人绑定了,页面跳转联系客服", 203);
+ }
+
+ /* 3、换绑 */
+ // 3.1、查询原记录
+ WxUserInstrument userInstrumentQuery = new WxUserInstrument();
+ userInstrumentQuery.setUserId(wxUserMember.getId());
+ userInstrumentQuery.setInstrumentId(newInstrumentSerial.getInstrumentId());
+ userInstrumentQuery.setStatus(Status.OK.getCode().longValue());
+ List wxUserInstrumentList = wxUserInstrumentMapper.selectListByUserIdAndInstrumentId(userInstrumentQuery);
+ if (wxUserInstrumentList == null || wxUserInstrumentList.size() != 1) {
+ logger.error("根据 用户id:{} 和 仪器id:{} 查询出来的数据为空或者数据量不止一条", wxUserMember.getId(), newInstrumentSerial.getInstrumentId());
+ throw new ServiceException("换绑失败!");
+ }
+ WxUserInstrument wxUserInstrument = wxUserInstrumentList.get(0);
+
+ // 3.2、更新旧的序列号状态为已解绑
+ // 当后管解除了用户和仪器的绑定,状态变为已解绑,无需再次修改序列号的绑定状态
+ if (BindingStatusEnums.UN_BOUND.getCode() == wxUserInstrument.getBindingStatus()) {
+ WxInstrumentSerial oldUpdate = new WxInstrumentSerial();
+ oldUpdate.setBindingStatus(BindingStatusEnums.UN_BOUND.getCode());
+ oldUpdate.setSerial(wxUserInstrument.getSerial());
+ wxInstrumentSerialMapper.updateBySerial(oldUpdate);
+ }
+ // 3.3、更新新的序列号状态为已绑定
+ WxInstrumentSerial newUpdate = new WxInstrumentSerial();
+ newUpdate.setBindingStatus(BindingStatusEnums.BINDED.getCode());
+ newUpdate.setSerial(serial);
+ wxInstrumentSerialMapper.updateBySerial(newUpdate);
+ // 3.4、更新用户仪器关联表
+ WxUserInstrument updateEntity = new WxUserInstrument();
+ updateEntity.setId(wxUserInstrument.getId());
+ updateEntity.setSerial(serial);
+ if (wxUserInstrument.getGuarantee() != null && wxUserInstrument.getGuarantee() >= 0) {
+ Instant instant = LocalDateTime.now().plusYears(wxUserInstrument.getGuarantee()).atZone(ZoneId.systemDefault()).toInstant();
+ updateEntity.setGuaranteeEndtime(Date.from(instant));
+ }
+ // 当后管解除了用户和仪器的绑定,状态变为已解绑,此时就需改为绑定状态
+ updateEntity.setBindingStatus(BindingStatusEnums.BINDED.getCode());
+ updateEntity.setUpdateBy(wxUserMember.getNickname());
+ updateEntity.setUpdateTime(DateUtils.getNowDate());
+ wxUserInstrumentMapper.updateWxUserInstrument(updateEntity);
+ // 3.5、用户仪器关联记录表
+ // 当后管解除了用户和仪器的绑定,操作记录已记录,无需再次记录
+ if (BindingStatusEnums.UN_BOUND.getCode() == wxUserInstrument.getBindingStatus()) {
+ WxUserInstrumentLog oldUserInstrumentLog = new WxUserInstrumentLog();
+ oldUserInstrumentLog.setUserInstrumentId(wxUserInstrument.getId());
+ oldUserInstrumentLog.setUserId(wxUserMember.getId());
+ oldUserInstrumentLog.setSerial(wxUserInstrument.getSerial());
+ oldUserInstrumentLog.setInstrumentId(wxUserInstrument.getInstrumentId());
+ oldUserInstrumentLog.setInstrumentName(wxUserInstrument.getInstrumentName());
+ oldUserInstrumentLog.setSerialImage(wxUserInstrument.getSerialImage());
+ oldUserInstrumentLog.setGuarantee(wxUserInstrument.getGuarantee());
+ oldUserInstrumentLog.setGuaranteeEndtime(wxUserInstrument.getGuaranteeEndtime());
+ oldUserInstrumentLog.setBindingStatus(BindingStatusEnums.UN_BOUND.getCode());
+ oldUserInstrumentLog.setStatus(Status.OK.getCode().longValue());
+ oldUserInstrumentLog.setCreateBy(wxUserMember.getNickname());
+ oldUserInstrumentLog.setCreateTime(DateUtils.getNowDate());
+ wxUserInstrumentLogMapper.insertWxUserInstrumentLog(oldUserInstrumentLog);
+ }
+ WxUserInstrumentLog newUserInstrumentLog = new WxUserInstrumentLog();
+ newUserInstrumentLog.setUserInstrumentId(wxUserInstrument.getId());
+ newUserInstrumentLog.setUserId(wxUserMember.getId());
+ newUserInstrumentLog.setSerial(serial);
+ newUserInstrumentLog.setInstrumentId(wxUserInstrument.getInstrumentId());
+ newUserInstrumentLog.setInstrumentName(wxUserInstrument.getInstrumentName());
+ newUserInstrumentLog.setSerialImage(wxUserInstrument.getSerialImage());
+ newUserInstrumentLog.setGuarantee(wxUserInstrument.getGuarantee());
+ newUserInstrumentLog.setGuaranteeEndtime(updateEntity.getGuaranteeEndtime());
+ newUserInstrumentLog.setBindingStatus(BindingStatusEnums.BINDED.getCode());
+ newUserInstrumentLog.setStatus(Status.OK.getCode().longValue());
+ newUserInstrumentLog.setCreateBy(wxUserMember.getNickname());
+ newUserInstrumentLog.setCreateTime(DateUtils.getNowDate());
+ wxUserInstrumentLogMapper.insertWxUserInstrumentLog(newUserInstrumentLog);
+ }
}