Explorar el Código

8.15 完善根据订单状态发送对应的消息推送

Mechrevo hace 1 año
padre
commit
b4f38689e7

+ 10 - 7
sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/MethodGoodsTransitService.java

@@ -102,6 +102,16 @@ public class MethodGoodsTransitService {
      * @return
      */
     public TbOrder setTbOrderProperties(TbGoodsTransit tbGoodsTransit, APPLoginUserInfo appLoginInfo){
+
+        //查询是否已存在该订单
+        List<TbOrder> tbOrderList = tbOrderMapper.selectList(
+                new LambdaQueryWrapper<TbOrder>()
+                        .eq(TbOrder::getGoodsId, tbGoodsTransit.getId())
+                        .ne(TbOrder::getEnterpriseConfirm, 2)// 2=一级市场商户已拒绝的订单
+                        .eq(TbOrder::getCancelPeople,0) // 0=该订单未被边民或者组长取消
+                        .eq(TbOrder::getDeleteStatus,DeleteStatus.DELETE_STATUS_ON.getCode()));
+        if(tbOrderList.size() != 0)throw new RuntimeException("当前商品已存在订单,暂时无法继续下单!");
+
         //执行采购,创建一级市场订单表
         TbOrder tbOrder = new TbOrder();
         List<TbPeople> tbPeopleList = tbPeopleMapper.selectList(new LambdaQueryWrapper<TbPeople>().eq(TbPeople::getId, appLoginInfo.getFk()).eq(TbPeople::getIsLock,IsLock.IS_LOCK_ON.getCode()).eq(TbPeople::getDeleteStatus,DeleteStatus.DELETE_STATUS_ON.getCode()));
@@ -145,13 +155,6 @@ public class MethodGoodsTransitService {
         tbOrder.setCreateBy(appLoginInfo.getLoginId());
         tbOrder.setCreateName(appLoginInfo.getLoginName());
         tbOrder.setCreateTime(new Date());
-        //		//查询是否已存在该订单
-        List<TbOrder> tbOrderList = tbOrderMapper.selectList(
-                new LambdaQueryWrapper<TbOrder>()
-                        .eq(TbOrder::getGoodsId, tbGoodsTransit.getId())
-                        .ne(TbOrder::getEnterpriseConfirm, 2)//不等于一级市场商户已拒绝的订单
-                        .eq(TbOrder::getDeleteStatus,DeleteStatus.DELETE_STATUS_ON.getCode()));
-        if(tbOrderList.size() != 0)throw new RuntimeException("当前商品已存在订单,暂时无法继续下单!");
 
         return tbOrder;
     }

+ 10 - 3
sp-service/level-one-server/src/main/java/com/pj/tb_goods_transit/TbGoodsTransitService.java

@@ -29,6 +29,7 @@ import com.pj.tb_goods_cart.TbGoodsCartService;
 import com.pj.tb_goods_transit.param.JudgeTransitParam;
 import com.pj.tb_goods_transit.param.PurchaseLevelOneGoodsTransitParam;
 import com.pj.tb_goods_transit.param.TransactionGoodsParam;
+import com.pj.tb_order.MethodOrderService;
 import com.pj.tb_order.TbOrder;
 import com.pj.tb_order.TbOrderMapper;
 import com.pj.tb_order.TbOrderService;
@@ -88,11 +89,15 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 
 	@Autowired
 	private TbEnterpriseMapper tbEnterpriseMapper;
+
 	@Autowired
 	private TbGoodsCartMapper tbGoodsCartMapper;
 
 	@Autowired
-	TbOrderService orderService;
+	private TbOrderService orderService;
+
+	@Autowired
+	private MethodOrderService methodOrderService;
 
 	/**
 	 * 远程调用
@@ -307,7 +312,8 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 		LambdaQueryWrapper<TbOrder> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(TbOrder::getBuyUserId,appLoginInfo.getFk());  //边民表主键匹配
 		queryWrapper.apply("DATE(create_time) = DATE({0})", new Date()); // 匹配当天的数据
-		queryWrapper.ne(TbOrder::getEnterpriseConfirm,2);
+		queryWrapper.ne(TbOrder::getEnterpriseConfirm,2); // 商户拒绝情况
+		queryWrapper.eq(TbOrder::getCancelPeople,0); // 组长或者边民未取消取消订单
 		List<TbOrder> orderList = tbOrderMapper.selectList(queryWrapper);
 		if(orderList.size() != 0){
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -336,7 +342,8 @@ public class TbGoodsTransitService extends ServiceImpl<TbGoodsTransitMapper, TbG
 				dto.setUserId(tbEnterprise.getId());
 				dto.setContents("你的发布的《" + tbGoodsTransit.getGoodsName() + "》已有人接单,请及时确认。");
 				adminInterface.messageSave(dto);
-
+				// 给组长旗下的所有边民发送message
+				methodOrderService.sendGroupMessage(list.get(0).getGroupId(),list.get(0).getName(),true);
 				//todo:通知短信
 //				return smsRetryService.sendSmsMsg(tbEnterprise.getContact());
 				return true;

+ 33 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order/MethodOrderService.java

@@ -1,8 +1,11 @@
 package com.pj.tb_order;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.pj.api.dto.MessageDto;
+import com.pj.api.dto.PeopleDto;
 import com.pj.common.core.exception.ServiceException;
 import com.pj.enummj.DeleteStatus;
+import com.pj.enummj.IsLock;
 import com.pj.tb_people.TbPeople;
 import com.pj.tb_people.TbPeopleMapper;
 import com.pj.utils.so.SoMap;
@@ -12,6 +15,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.pj.api.consts.FeignFactory.adminInterface;
 
 /**
  * @Author Mechrevo
@@ -56,5 +62,32 @@ public class MethodOrderService {
 
     }
 
+    /**
+     * 给互助组下属所有人发送取消的message
+     * @param groupId  边民组ID
+     * @param peopleName 边民表的边民名称
+     * @param flag true=下单情况下发送message , false=取消订单时发送message
+     */
+    public void sendGroupMessage(Long groupId,String peopleName,boolean flag){
+        //遍历取出边民组的的所有ID
+        List<Long> peopleIdList = tbPeopleMapper.selectList
+                        (new LambdaQueryWrapper<TbPeople>()
+                                .eq(TbPeople::getGroupId, groupId)
+                                .eq(TbPeople::getIsLock, IsLock.IS_LOCK_ON.getCode())
+                                .eq(TbPeople::getDeleteStatus, DeleteStatus.DELETE_STATUS_ON.getCode()))
+                .stream().map(TbPeople::getId).collect(Collectors.toList());
+        //遍历发送
+        for (Long item : peopleIdList){
+            MessageDto dto = new MessageDto();
+            dto.setUrl("/pages/market/one/merchant/order/list");
+            dto.setUserId(item);
+            if(flag){
+                dto.setContents("你的购买的商品已被组长 <<" + peopleName + ">> 下单,请往app内进行查看。");
+            }else {
+                dto.setContents("你的购买的商品已被 <<" + peopleName + ">> 取消,请往app内进行查看。");
+            }
+            adminInterface.messageSave(dto);
+        }
+    }
 
 }

+ 7 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderAppController.java

@@ -41,6 +41,13 @@ public class TbOrderAppController {
 		return AjaxJson.getByLine(line);
 	}
 
+	/** 删 */
+	@RequestMapping("delete")
+	public AjaxJson delete(Long id){
+		tbOrderService.delete(id);
+		return AjaxJson.getSuccess();
+	}
+
 	/** 改 */
 	@RequestMapping("update")
 	public AjaxJson update(TbOrder t){

+ 7 - 0
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderService.java

@@ -8,8 +8,10 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.pj.api.client.admin.AdminInterface;
+import com.pj.api.client.level_one_server.LevelOneServerInterface;
 import com.pj.api.dto.MessageDto;
 import com.pj.api.dto.OrderDto;
+import com.pj.api.dto.PeopleDto;
 import com.pj.common.core.exception.ServiceException;
 import com.pj.current.dto.APPLoginUserInfo;
 import com.pj.current.satoken.StpAPPUserUtil;
@@ -50,6 +52,8 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 	private TbGoodsTransitMapper tbGoodsTransitMapper;
 	@Autowired
 	private TbGoodsTransitService tbGoodsTransitService;
+	@Autowired
+	private LevelOneServerInterface levelOneServerInterface;
 
 	/**
 	 * 远程调用
@@ -151,6 +155,9 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 			tbGoodsTransit.setEnterpriseConfirm(0); // 修改商户确认状态为未确认
 			//执行保存
 			int updated = tbGoodsTransitMapper.updateById(tbGoodsTransit);
+			//给互助组下属所有人发送取消的message
+			PeopleDto peopleDto = levelOneServerInterface.getRpcById(appLoginInfo.getFk());
+			methodOrderService.sendGroupMessage(peopleDto.getGroupId(),peopleDto.getName(),false);
 			return updated == 1;
 		}
 		return false;

+ 3 - 3
sp-service/sp-admin/src/main/java/com/pj/project/app_user/AppUserService.java

@@ -153,11 +153,11 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 		if(registerDto == null)return false;
 		//手机号去重
 		String phone = registerDto.getPhone();
-		if(appUserMapper.selectList(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone,phone).eq(AppUser::getDeleteStatus,1)).size() != 0)
+		if(appUserMapper.selectList(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone,phone).eq(AppUser::getDeleteStatus,DeleteStatus.DELETE_STATUS_ON.getCode())).size() != 0)
 			throw new RuntimeException("当前手机号已被注册!");
 		//开始进行实际注册
 		//1. 查询数据库内是否存在逻辑删除
-		List<Long> collect = appUserMapper.selectList(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, phone).eq(AppUser::getDeleteStatus, 0)).stream().map(AppUser::getId).collect(Collectors.toList());
+		List<Long> collect = appUserMapper.selectList(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, phone).eq(AppUser::getDeleteStatus, DeleteStatus.DELETE_STATUS_OFF.getCode())).stream().map(AppUser::getId).collect(Collectors.toList());
 		//删除旧数据
 		if(collect.size() > 0)appUserMapper.deleteBatchIds(collect);
 		//2.校验密码
@@ -299,7 +299,7 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
 		//生成4位随机数
 		Random random = new Random();
 		int randomNumber = random.nextInt(9000) + 1000;
-		//保存到缓存,默认1分钟
+		//保存到缓存,默认1分钟 todo:届时放开手机验证码 randomNumber
 		RedisUtil.setByMINUTES(PREFIX + phone,123 + "", 1);
 		//发送验证码短信
 		return true;

+ 4 - 4
sp-service/sp-admin/src/main/java/com/pj/project/app_user/MethodAppUserService.java

@@ -77,7 +77,7 @@ public class MethodAppUserService {
     AppUserVo setPurchaser(AppUserVo appUser){
         //查询国内收购商
         PurchaserDto purchaserDto = levelTwoServerInterface.getByPurchaserId(appUser.getFk());
-        if(purchaserDto == null)throw new ServiceException("二级市场商户远程调用失败!");
+        if(purchaserDto == null)throw new ServiceException("二级市场商户个人信息查询失败!");
         //设置基本属性
         appUser.setRoleName("国内收购商");
         appUser.setTradeAreaName("国内");
@@ -96,7 +96,7 @@ public class MethodAppUserService {
     AppUserVo setDriver(AppUserVo appUser){
         //查询货运司机
         DriverDto driverDto = transportInterface.getByDriverId(appUser.getFk());
-        if(driverDto == null)throw new ServiceException("司机远程调用失败!");
+        if(driverDto == null)throw new ServiceException("司机个人信息查询失败!");
         //设置基本属性
         appUser.setRoleName("司机");
         appUser.setTradeAreaName(driverDto.getTradeAreaName());
@@ -115,7 +115,7 @@ public class MethodAppUserService {
     AppUserVo setEnterprise(AppUserVo appUser){
         //查询一级市场商户表
         EnterpriseDto enterprise = levelOneServerInterface.getEnterpriseById(appUser.getFk());
-        if(enterprise == null)throw new ServiceException("一级市场商户远程调用失败!");
+        if(enterprise == null)throw new ServiceException("一级市场商户个人信息查询失败!");
         //设置基本属性
         appUser.setRoleName("一级市场商户");
         appUser.setTradeAreaName("待填");
@@ -133,7 +133,7 @@ public class MethodAppUserService {
     AppUserVo setPeopleProperties(AppUserVo appUser){
         //查询边民表
         PeopleDto peopleDto = levelOneServerInterface.getRpcById(appUser.getFk());
-        if(peopleDto == null)throw new ServiceException("一级市场边民远程调用失败!");
+        if(peopleDto == null)throw new ServiceException("一级市场边民个人信息查询失败!");
         //设置基本属性
         appUser.setRoleName(peopleDto.getRole() == 1? "普通边民" : "边民组组长");
         appUser.setTradeAreaName(peopleDto.getTradeAreaName());

+ 12 - 0
sp-service/sp-admin/src/main/java/com/pj/project/tb_message/TbMessageAppController.java

@@ -6,6 +6,7 @@ import com.pj.project4sp.SP;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -29,6 +30,17 @@ public class TbMessageAppController {
     TbMessageService tbMessageService;
 
     /**
+     * app端: 删除消息 (可批量,可单条)
+     * @param ids
+     * @return
+     */
+    @DeleteMapping("deleteByIdList")
+    public AjaxJson deleteByIdList(List<Long> ids){
+        tbMessageService.removeByIds(ids);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
      * 消息中心
      */
     @GetMapping("getList")