Your Name лет назад: 2
Родитель
Сommit
f6a1cfdafd

+ 1 - 1
java110-core/src/main/java/com/java110/core/factory/AuthenticationFactory.java

@@ -45,7 +45,7 @@ import java.util.UUID;
  */
 public class AuthenticationFactory {
 
-    private final static String PASSWD_SALT = "hc@java110";
+    public final static String PASSWD_SALT = "hc@java110";
     /**
      * 偏移变量,固定占8位字节
      */

+ 16 - 0
java110-interface/src/main/java/com/java110/intf/user/IUserV1InnerServiceSMO.java

@@ -79,4 +79,20 @@ public interface IUserV1InnerServiceSMO {
      */
     @RequestMapping(value = "/queryStaffsNoInOrg", method = RequestMethod.POST)
     List<UserDto> queryStaffsNoInOrg(@RequestBody UserDto userDto);
+
+    /**
+     * 根据 二维码获取用户手机号
+     * @param qrCode
+     * @return
+     */
+    @RequestMapping(value = "/getUserIdByQrCode", method = RequestMethod.POST)
+    String getUserIdByQrCode(@RequestBody String qrCode);
+
+    /**
+     * 根据 二维码获取用户手机号
+     * @param userId
+     * @return
+     */
+    @RequestMapping(value = "/generatorUserIdQrCode", method = RequestMethod.POST)
+    String generatorUserIdQrCode(@RequestBody String userId);
 }

+ 164 - 0
service-store/src/main/java/com/java110/store/cmd/reserveOrder/DoDiningCmd.java

@@ -0,0 +1,164 @@
+package com.java110.store.cmd.reserveOrder;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.community.CommunitySpacePersonTimeDto;
+import com.java110.dto.reserve.ReserveGoodsConfirmOrderDto;
+import com.java110.dto.reserve.ReserveGoodsDto;
+import com.java110.dto.reserve.ReserveGoodsOrderDto;
+import com.java110.dto.reserve.ReserveGoodsOrderTimeDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.store.IReserveGoodsConfirmOrderV1InnerServiceSMO;
+import com.java110.intf.store.IReserveGoodsOrderTimeV1InnerServiceSMO;
+import com.java110.intf.store.IReserveGoodsOrderV1InnerServiceSMO;
+import com.java110.intf.store.IReserveGoodsV1InnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
+import com.java110.po.reserveGoodsConfirmOrder.ReserveGoodsConfirmOrderPo;
+import com.java110.po.reserveGoodsOrder.ReserveGoodsOrderPo;
+import com.java110.po.reserveGoodsOrderTime.ReserveGoodsOrderTimePo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.text.ParseException;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 就餐 处理类
+ */
+@Java110Cmd(serviceCode = "reserveOrder.doDining")
+public class DoDiningCmd extends Cmd {
+    public static final String CODE_PREFIX_ID = "10";
+
+    @Autowired
+    private IReserveGoodsOrderV1InnerServiceSMO reserveGoodsOrderV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IReserveGoodsOrderTimeV1InnerServiceSMO reserveGoodsOrderTimeV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IReserveGoodsV1InnerServiceSMO reserveGoodsV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IReserveGoodsConfirmOrderV1InnerServiceSMO reserveGoodsConfirmOrderV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+        Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区");
+        Assert.hasKeyAndValue(reqJson, "qrCode", "未包含二维码");
+        Assert.hasKeyAndValue(reqJson, "goodsId", "未包含商品");
+
+
+    }
+
+    @Override
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+//校验是否可以预约
+        ReserveGoodsDto reserveGoodsDto = new ReserveGoodsDto();
+        reserveGoodsDto.setGoodsId(reqJson.getString("goodsId"));
+        List<ReserveGoodsDto> reserveGoodsDtos = reserveGoodsV1InnerServiceSMOImpl.queryReserveGoodss(reserveGoodsDto);
+        Assert.listOnlyOne(reserveGoodsDtos, "就餐不存在");
+
+        String userId = userV1InnerServiceSMOImpl.getUserIdByQrCode(reqJson.getString("qrCode"));
+
+        if(StringUtil.isEmpty(userId)){
+            throw new CmdException("二维码过期");
+        }
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(userId);
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+
+        Assert.listOnlyOne(userDtos, "用户不存在");
+
+        ReserveGoodsOrderPo reserveGoodsOrderPo = new ReserveGoodsOrderPo();
+        reserveGoodsOrderPo.setOrderId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+        reserveGoodsOrderPo.setGoodsId(reqJson.getString("goodsId"));
+        reserveGoodsOrderPo.setCommunityId(reqJson.getString("communityId"));
+        reserveGoodsOrderPo.setAppointmentTime(DateUtil.getFormatTimeStringB(DateUtil.getCurrentDate()));
+        reserveGoodsOrderPo.setPayWay("1"); // 现金支付
+        reserveGoodsOrderPo.setPersonId(userDtos.get(0).getUserId());
+        reserveGoodsOrderPo.setPersonName(userDtos.get(0).getName());
+        reserveGoodsOrderPo.setPersonTel(userDtos.get(0).getTel());
+        reserveGoodsOrderPo.setReceivableAmount(reserveGoodsDtos.get(0).getPrice());
+        reserveGoodsOrderPo.setReceivedAmount("0");
+        reserveGoodsOrderPo.setType("type");
+        if (StringUtil.isEmpty(reserveGoodsOrderPo.getExtOrderId())) {
+            reserveGoodsOrderPo.setExtOrderId("-1");
+        }
+
+        reserveGoodsOrderPo.setState(ReserveGoodsOrderDto.STATE_W);
+
+        int flag = reserveGoodsOrderV1InnerServiceSMOImpl.saveReserveGoodsOrder(reserveGoodsOrderPo);
+
+        if (flag < 1) {
+            throw new CmdException("保存数据失败");
+        }
+        //预约时间
+        ReserveGoodsOrderTimePo reserveGoodsOrderTimePo = null;
+        reserveGoodsOrderTimePo = new ReserveGoodsOrderTimePo();
+        reserveGoodsOrderTimePo.setCommunityId(reserveGoodsOrderPo.getCommunityId());
+        reserveGoodsOrderTimePo.setGoodsId(reserveGoodsOrderPo.getGoodsId());
+        reserveGoodsOrderTimePo.setOrderId(reserveGoodsOrderPo.getOrderId());
+        Calendar calendar = Calendar.getInstance();
+        reserveGoodsOrderTimePo.setHours(calendar.get(Calendar.HOUR) + "");
+        reserveGoodsOrderTimePo.setQuantity("1");
+        reserveGoodsOrderTimePo.setTimeId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+        reserveGoodsOrderTimePo.setState(ReserveGoodsOrderTimeDto.STATE_WAIT_CONFIRM);
+        reserveGoodsOrderTimeV1InnerServiceSMOImpl.saveReserveGoodsOrderTime(reserveGoodsOrderTimePo);
+
+        // todo 核销预约
+        ReserveGoodsOrderTimeDto reserveGoodsOrderTimeDto = new ReserveGoodsOrderTimeDto();
+        reserveGoodsOrderTimeDto.setTimeId(reserveGoodsOrderTimePo.getTimeId());
+        reserveGoodsOrderTimeDto.setCommunityId(reqJson.getString("communityId"));
+        reserveGoodsOrderTimeDto.setState(CommunitySpacePersonTimeDto.STATE_WAIT_CONFIRM);
+        List<ReserveGoodsOrderTimeDto> reserveGoodsOrderTimeDtos = reserveGoodsOrderTimeV1InnerServiceSMOImpl.queryReserveGoodsOrderTimes(reserveGoodsOrderTimeDto);
+
+        Assert.listOnlyOne(reserveGoodsOrderTimeDtos, "未包含预约记录");
+
+        ReserveGoodsOrderDto reserveGoodsOrderDto = new ReserveGoodsOrderDto();
+        reserveGoodsOrderDto.setOrderId(reserveGoodsOrderTimeDtos.get(0).getOrderId());
+        List<ReserveGoodsOrderDto> reserveGoodsOrderDtos = reserveGoodsOrderV1InnerServiceSMOImpl.queryReserveGoodsOrders(reserveGoodsOrderDto);
+        Assert.listOnlyOne(reserveGoodsOrderDtos, "预约订单不存在");
+
+        //todo 将 时间修改 核销中
+        reserveGoodsOrderTimePo = new ReserveGoodsOrderTimePo();
+        reserveGoodsOrderTimePo.setTimeId(reserveGoodsOrderTimeDtos.get(0).getTimeId());
+        reserveGoodsOrderTimePo.setState(CommunitySpacePersonTimeDto.STATE_FINISH);
+        flag = reserveGoodsOrderTimeV1InnerServiceSMOImpl.updateReserveGoodsOrderTime(reserveGoodsOrderTimePo);
+        if (flag < 1) {
+            throw new CmdException("核销预约失败");
+        }
+
+        ReserveGoodsConfirmOrderPo reserveGoodsConfirmOrderPo = new ReserveGoodsConfirmOrderPo();
+        reserveGoodsConfirmOrderPo.setCoId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+        reserveGoodsConfirmOrderPo.setOrderId(reserveGoodsOrderTimeDtos.get(0).getOrderId());
+        reserveGoodsConfirmOrderPo.setType(reserveGoodsOrderDtos.get(0).getType());
+        reserveGoodsConfirmOrderPo.setGoodsId(reserveGoodsOrderDtos.get(0).getGoodsId());
+        reserveGoodsConfirmOrderPo.setCommunityId(reqJson.getString("communityId"));
+        reserveGoodsConfirmOrderPo.setTimeId(reserveGoodsOrderTimePo.getTimeId());
+        flag = reserveGoodsConfirmOrderV1InnerServiceSMOImpl.saveReserveGoodsConfirmOrder(reserveGoodsConfirmOrderPo);
+
+        if (flag < 1) {
+            throw new CmdException("保存数据失败");
+        }
+
+        context.setResponseEntity(ResultVo.success());
+    }
+}

+ 61 - 0
service-user/src/main/java/com/java110/user/cmd/user/GeneratorUserQrCodeCmd.java

@@ -0,0 +1,61 @@
+package com.java110.user.cmd.user;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.doc.annotation.*;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
+import com.java110.utils.exception.CmdException;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.text.ParseException;
+
+
+@Java110CmdDoc(title = "生成用户二维码",
+        description = "生成用户的唯一二维码信息",
+        httpMethod = "post",
+        url = "http://{ip}:{port}/app/user.generatorUserQrCode",
+        resource = "userDoc",
+        author = "吴学文",
+        serviceCode = "user.generatorUserQrCode",
+        seq = 10
+)
+
+
+@Java110ResponseDoc(
+        params = {
+                @Java110ParamDoc(name = "code", type = "int", length = 11, defaultValue = "0", remark = "返回编号,0 成功 其他失败"),
+                @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "成功", remark = "描述"),
+                @Java110ParamDoc(name = "data", type = "String", length = 250, defaultValue = "二维码", remark = "二维码"),
+        }
+)
+
+@Java110ExampleDoc(
+        reqBody = "{}",
+        resBody = "{'code':0,'msg':'成功','data':'sdsfsdf'}"
+)
+
+@Java110Cmd(serviceCode = "user.generatorUserQrCode")
+public class GeneratorUserQrCodeCmd extends Cmd {
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+
+        String userId = context.getReqHeaders().get("user-id");
+
+        String qrCode = userV1InnerServiceSMOImpl.generatorUserIdQrCode(userId);
+
+        context.setResponseEntity(ResultVo.createResponseEntity(qrCode));
+    }
+}

+ 40 - 12
service-user/src/main/java/com/java110/user/smo/impl/UserV1InnerServiceSMOImpl.java

@@ -16,14 +16,19 @@
 package com.java110.user.smo.impl;
 
 
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.AuthenticationFactory;
 import com.java110.user.dao.IUserV1ServiceDao;
 import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.dto.user.UserDto;
 import com.java110.po.user.UserPo;
+import com.java110.utils.cache.CommonCache;
+import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.dto.user.UserDto;
 import com.java110.dto.PageDto;
+import com.java110.utils.util.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -47,26 +52,26 @@ public class UserV1InnerServiceSMOImpl extends BaseServiceSMO implements IUserV1
 
 
     @Override
-    public int saveUser(@RequestBody  UserPo userPo) {
+    public int saveUser(@RequestBody UserPo userPo) {
         int saveFlag = userV1ServiceDaoImpl.saveUserInfo(BeanConvertUtil.beanCovertMap(userPo));
         return saveFlag;
     }
 
-     @Override
-    public int updateUser(@RequestBody  UserPo userPo) {
+    @Override
+    public int updateUser(@RequestBody UserPo userPo) {
         int saveFlag = userV1ServiceDaoImpl.updateUserInfo(BeanConvertUtil.beanCovertMap(userPo));
         return saveFlag;
     }
 
-     @Override
-    public int deleteUser(@RequestBody  UserPo userPo) {
-       userPo.setStatusCd("1");
-       int saveFlag = userV1ServiceDaoImpl.updateUserInfo(BeanConvertUtil.beanCovertMap(userPo));
-       return saveFlag;
+    @Override
+    public int deleteUser(@RequestBody UserPo userPo) {
+        userPo.setStatusCd("1");
+        int saveFlag = userV1ServiceDaoImpl.updateUserInfo(BeanConvertUtil.beanCovertMap(userPo));
+        return saveFlag;
     }
 
     @Override
-    public List<UserDto> queryUsers(@RequestBody  UserDto userDto) {
+    public List<UserDto> queryUsers(@RequestBody UserDto userDto) {
 
         //校验是否传了 分页信息
 
@@ -84,10 +89,11 @@ public class UserV1InnerServiceSMOImpl extends BaseServiceSMO implements IUserV1
 
     @Override
     public int queryUsersCount(@RequestBody UserDto userDto) {
-        return userV1ServiceDaoImpl.queryUsersCount(BeanConvertUtil.beanCovertMap(userDto));    }
+        return userV1ServiceDaoImpl.queryUsersCount(BeanConvertUtil.beanCovertMap(userDto));
+    }
 
     @Override
-    public int queryStaffsNoInOrgCount(@RequestBody  UserDto userDto) {
+    public int queryStaffsNoInOrgCount(@RequestBody UserDto userDto) {
         return userV1ServiceDaoImpl.queryStaffsNoInOrgCount(BeanConvertUtil.beanCovertMap(userDto));
     }
 
@@ -103,6 +109,28 @@ public class UserV1InnerServiceSMOImpl extends BaseServiceSMO implements IUserV1
 
         List<UserDto> users = BeanConvertUtil.covertBeanList(userV1ServiceDaoImpl.queryStaffsNoInOrg(BeanConvertUtil.beanCovertMap(userDto)), UserDto.class);
 
-        return users;    }
+        return users;
+    }
+
+    @Override
+    public String getUserIdByQrCode(@RequestBody String qrCode) {
+        qrCode = AuthenticationFactory.AesDecrypt(qrCode, AuthenticationFactory.PASSWD_SALT);
+        JSONObject qrCodeJson = JSONObject.parseObject(qrCode);
+        long time = qrCodeJson.getLongValue("time");
+        if (DateUtil.getCurrentDate().getTime() - time > 5 * 60 * 1000) {
+            throw new IllegalArgumentException("二维码失效");
+        }
+
+        return qrCodeJson.getString("userId");
+    }
+
+    @Override
+    public String generatorUserIdQrCode(@RequestBody String userId) {
+        JSONObject qrCodeJson = new JSONObject();
+        qrCodeJson.put("userId", userId);
+        qrCodeJson.put("time", DateUtil.getCurrentDate().getTime());
+        String qrCode = AuthenticationFactory.AesEncrypt(qrCodeJson.toJSONString(), AuthenticationFactory.PASSWD_SALT);
+        return qrCode;
+    }
 
 }