소스 검색

fix:地址

wrj 1 년 전
부모
커밋
a557814344
23개의 변경된 파일291개의 추가작업 그리고 48개의 파일을 삭제
  1. 6 0
      nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TAddressController.java
  2. 15 0
      nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TJsController.java
  3. 16 2
      nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TOrderController.java
  4. 1 8
      nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TRechargeController.java
  5. 5 0
      nightFragrance-common/src/main/java/com/ylx/common/constant/MassageConstants.java
  6. 1 1
      nightFragrance-framework/src/main/java/com/ylx/framework/config/SecurityConfig.java
  7. 1 1
      nightFragrance-massage/src/main/java/com/ylx/massage/domain/TAddress.java
  8. 5 5
      nightFragrance-massage/src/main/java/com/ylx/massage/domain/TJs.java
  9. 7 0
      nightFragrance-massage/src/main/java/com/ylx/massage/domain/TOrder.java
  10. 3 0
      nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/TJsVo.java
  11. 8 0
      nightFragrance-massage/src/main/java/com/ylx/massage/service/TAddressService.java
  12. 1 1
      nightFragrance-massage/src/main/java/com/ylx/massage/service/TOrderService.java
  13. 3 0
      nightFragrance-massage/src/main/java/com/ylx/massage/service/TRechargeService.java
  14. 1 0
      nightFragrance-massage/src/main/java/com/ylx/massage/service/TWxUserService.java
  15. 21 0
      nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TAddressServiceImpl.java
  16. 23 8
      nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TJsServiceImpl.java
  17. 40 9
      nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TOrderServiceImpl.java
  18. 24 0
      nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TRechargeServiceImpl.java
  19. 9 0
      nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TWxUserServiceImpl.java
  20. 9 9
      nightFragrance-massage/src/main/java/com/ylx/massage/utils/BillNoUtil.java
  21. 77 0
      nightFragrance-massage/src/main/java/com/ylx/massage/utils/OrderNumberGenerator.java
  22. 9 4
      nightFragrance-massage/src/main/resources/mapper/massage/TJsMapper.xml
  23. 6 0
      nightFragrance-massage/src/main/resources/mapper/massage/TOrderMapper.xml

+ 6 - 0
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TAddressController.java

@@ -99,5 +99,11 @@ public class TAddressController extends BaseController {
     public R delete(@RequestParam("idList") List<Long> idList) {
         return R.ok(this.tAddressService.removeByIds(idList));
     }
+
+    @PostMapping("/defaultAddress")
+    @ApiOperation("设置默认地址")
+    public R defaultAddress(@RequestBody TAddress tAddress) {
+        return R.ok(this.tAddressService.defaultAddress(tAddress));
+    }
 }
 

+ 15 - 0
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TJsController.java

@@ -165,4 +165,19 @@ public class TJsController extends BaseController {
             return R.fail("系统异常");
         }
     }
+    @ApiOperation("根据OpenId查询技师")
+    @RequestMapping(value = "/wx/getByOpenId", method = RequestMethod.POST)
+    public R getByOpenId(@RequestBody TJs js) {
+        try {
+            LambdaQueryWrapper<TJs> mhCompanyLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            mhCompanyLambdaQueryWrapper.eq(TJs::getcOpenId, js.getcOpenId());
+            return R.ok(jsService.getOne(mhCompanyLambdaQueryWrapper));
+        } catch (ServiceException s) {
+            log.error(s.getMessage());
+            return R.fail(s.getMessage());
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return R.fail("系统异常");
+        }
+    }
 }

+ 16 - 2
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TOrderController.java

@@ -2,7 +2,10 @@ package com.ylx.web.controller.massage;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ylx.common.annotation.Log;
 import com.ylx.common.core.domain.R;
+import com.ylx.common.enums.BusinessType;
+import com.ylx.common.exception.ServiceException;
 import com.ylx.common.utils.StringUtils;
 import com.ylx.massage.domain.TOrder;
 import com.ylx.massage.enums.Enumproject;
@@ -10,6 +13,7 @@ import com.ylx.massage.enums.OrderStatusEnum;
 import com.ylx.massage.service.TOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -23,6 +27,7 @@ import java.util.List;
  * 订单表 前端控制器
  */
 @RestController
+@Slf4j
 @Api(tags = {"订单管理"})
 @RequestMapping("api/order/v1")
 public class TOrderController {
@@ -37,9 +42,18 @@ public class TOrderController {
      * @return
      */
     @ApiOperation("添加申请")
+    @Log(title = "订单", businessType = BusinessType.INSERT)
     @RequestMapping(value = "wx/add", method = RequestMethod.POST)
-    public String add(@RequestBody TOrder order) {
-        return orderService.addOrder(order);
+    public R<TOrder> add(@RequestBody TOrder order) {
+        try {
+            return R.ok(orderService.addOrder(order));
+        } catch (ServiceException s) {
+            log.error(s.toString());
+            return R.fail(s.getMessage());
+        } catch (Exception e) {
+            log.error(e.toString());
+            return R.fail("系统异常");
+        }
     }
 
     /**

+ 1 - 8
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TRechargeController.java

@@ -1,9 +1,7 @@
 package com.ylx.web.controller.massage;
 
 import com.ylx.common.core.domain.R;
-import com.ylx.common.utils.uuid.IdUtils;
 import com.ylx.massage.domain.TRecharge;
-import com.ylx.massage.domain.TWxUser;
 import com.ylx.massage.service.TRechargeService;
 import com.ylx.massage.service.TWxUserService;
 import io.swagger.annotations.Api;
@@ -35,11 +33,6 @@ public class TRechargeController {
     @RequestMapping(value = "wx/add", method = RequestMethod.POST)
     private R add(@RequestBody TRecharge recharge) {
         // 获取对应用户
-        TWxUser user = wxUserService.getById(recharge.getcOpenId());
-        user.setdBalance(user.getdBalance().add(recharge.getdMoney()));
-        wxUserService.updateById(user);
-        recharge.setDtCreateTime(LocalDateTime.now());
-        recharge.setcId(IdUtils.fastSimpleUUID());
-        return R.ok(rechargeService.save(recharge));
+        return R.ok(rechargeService.recharge(recharge));
     }
 }

+ 5 - 0
nightFragrance-common/src/main/java/com/ylx/common/constant/MassageConstants.java

@@ -16,5 +16,10 @@ public class MassageConstants {
 
     public static final Integer INTEGER_TEN = 10;
 
+    /**
+     * 单号key前缀
+     */
+    public static final String NUMBER = "number:";
+
 
 }

+ 1 - 1
nightFragrance-framework/src/main/java/com/ylx/framework/config/SecurityConfig.java

@@ -113,7 +113,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
                 .antMatchers("/login", "/register", "/captchaImage","/wx/login",
                         "/api/lbt/v1/getAll", "/api/js/v1/select", "/api/xiangmu/v1/wx/getAll", "/api/order/v1/getStatus",
-                        "/api/xiangmu/v1/getByid", "/api/js/v1/wx/getByid").permitAll()
+                        "/api/xiangmu/v1/getByid", "/api/js/v1/wx/getByid","/api/js/v1/wx/select").permitAll()
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/domain/TAddress.java

@@ -32,7 +32,7 @@ public class TAddress extends Model<TAddress> {
     @ApiModelProperty("姓名")
     private String userName;
     //地图展示地址
-    @ApiModelProperty("地图展示地址")
+    @ApiModelProperty("备注地址")
     private String atlasAdd;
     //经度
     @ApiModelProperty("经度")

+ 5 - 5
nightFragrance-massage/src/main/java/com/ylx/massage/domain/TJs.java

@@ -40,9 +40,9 @@ public class TJs implements Serializable {
     /**
      * 可预约项目编号 JsonArray
      */
-    @TableField(value = "c_bh_list",typeHandler = FastjsonTypeHandler.class)
-    @ApiModelProperty("可预约项目编号 JsonArray")
-    private JSONArray cBhList;
+    @TableField(value = "c_bh_list")
+    @ApiModelProperty("可预约项目编号")
+    private String cBhList;
 
     /**
      * 生活照 JsonArray
@@ -226,11 +226,11 @@ public class TJs implements Serializable {
         this.cOpenId = cOpenId;
     }
 
-    public JSONArray getcBhList() {
+    public String getcBhList() {
         return cBhList;
     }
 
-    public void setcBhList(JSONArray cBhList) {
+    public void setcBhList(String cBhList) {
         this.cBhList = cBhList;
     }
 

+ 7 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/TOrder.java

@@ -44,6 +44,10 @@ public class TOrder implements Serializable {
     @ApiModelProperty("技师id")
     private String cJsId;
 
+    @TableField("order_no")
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
     /**
      * 用户openid
      */
@@ -79,6 +83,9 @@ public class TOrder implements Serializable {
     @ApiModelProperty("地址")
     private String cAddress;
 
+    @ApiModelProperty("备注地址")
+    private String atlasAdd;
+
     /**
      * 姓名
      */

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/TJsVo.java

@@ -18,6 +18,9 @@ public class TJsVo extends TJs {
     @ApiModelProperty("昵称或电话")
     private String nameOrPhone;
 
+    @ApiModelProperty("项目编号")
+    private String projectId;
+
     private List<String> ids;
 
 }

+ 8 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/TAddressService.java

@@ -11,5 +11,13 @@ import com.ylx.massage.domain.TAddress;
  */
 public interface TAddressService extends IService<TAddress> {
 
+    /**
+     * 获取默认地址
+     * @param openId
+     * @return
+     */
+    public TAddress getByOpenId(String openId);
+
+    Boolean defaultAddress(TAddress tAddress);
 }
 

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/service/TOrderService.java

@@ -12,7 +12,7 @@ public interface TOrderService extends IService<TOrder> {
     /**
      * 添加订单
      */
-    public String addOrder(TOrder order);
+    public TOrder addOrder(TOrder order);
 
     /**
      * 支付订单

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/TRechargeService.java

@@ -1,11 +1,14 @@
 package com.ylx.massage.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ylx.common.core.domain.R;
 import com.ylx.massage.domain.TRecharge;
+import com.ylx.massage.domain.TWxUser;
 
 /**
  * 充值记录表 服务类
  */
 public interface TRechargeService extends IService<TRecharge> {
 
+    R recharge(TRecharge recharge);
 }

+ 1 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/TWxUserService.java

@@ -9,5 +9,6 @@ import com.ylx.massage.domain.TWxUser;
  */
 public interface TWxUserService extends IService<TWxUser> {
 
+    public TWxUser getByOpenId(String openId);
 
 }

+ 21 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TAddressServiceImpl.java

@@ -1,10 +1,12 @@
 package com.ylx.massage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ylx.massage.mapper.TAddressMapper;
 import com.ylx.massage.domain.TAddress;
 import com.ylx.massage.service.TAddressService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 轮播图(TAddress)表服务实现类
@@ -15,5 +17,24 @@ import org.springframework.stereotype.Service;
 @Service("tAddressService")
 public class TAddressServiceImpl extends ServiceImpl<TAddressMapper, TAddress> implements TAddressService {
 
+    @Override
+    public TAddress getByOpenId(String openId) {
+        LambdaQueryWrapper<TAddress> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        objectLambdaQueryWrapper.eq(TAddress::getOpenid, openId).eq(TAddress::getType, 1);
+        return this.getOne(objectLambdaQueryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean defaultAddress(TAddress tAddress) {
+
+        TAddress oldAddress = this.getByOpenId(tAddress.getOpenid());
+        if (oldAddress != null) {
+            oldAddress.setType(0);
+            this.updateById(oldAddress);
+        }
+        tAddress.setType(1);
+        return this.updateById(tAddress);
+    }
 }
 

+ 23 - 8
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TJsServiceImpl.java

@@ -1,10 +1,12 @@
 package com.ylx.massage.service.impl;
 
 
+import cn.hutool.json.JSONObject;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import com.ylx.common.constant.MassageConstants;
 import com.ylx.common.exception.ServiceException;
 import com.ylx.common.utils.StringUtils;
@@ -16,19 +18,22 @@ import com.ylx.massage.mapper.TJsMapper;
 import com.ylx.massage.service.TJsService;
 import com.ylx.massage.service.TXiangmuService;
 import com.ylx.massage.utils.LocationUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
-import java.util.Date;
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 技师表 服务实现类
  */
 @Service
+@Slf4j
 public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsService {
     @Resource
     private TJsMapper mapper;
@@ -46,13 +51,23 @@ public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsSe
 
     @Override
     public boolean addJs(TJs js) {
-
+        LambdaQueryWrapper<TJs> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(TJs::getcOpenId, js.getcOpenId());
+        TJs cjs = this.getOne(queryWrapper);
+        if (cjs != null) {
+            throw new ServiceException("请勿重复申请");
+        }
         if (StringUtils.isBlank(js.getcPhone())) {
             throw new ServiceException("手机号不能为空");
         }
-
-        //缓存技师位置
-//        locationUtil.geoAdd(js.getcOpenId(), js.getLongitude().doubleValue(), js.getLatitude().doubleValue());
+        if (StringUtils.isBlank(js.getcAddress())) {
+            throw new ServiceException("地址不能为空");
+        }
+        log.info("js:{}", js);
+        JSONObject jsonObject = new JSONObject(js.getcAddress());
+        Object latitude = jsonObject.get("latitude");
+        Object longitude = jsonObject.get("longitude");
+        locationUtil.geoAdd(js.getcOpenId(), Double.parseDouble(longitude.toString()), Double.parseDouble(latitude.toString()));
         extracted(js);
         return this.save(js);
     }
@@ -68,14 +83,14 @@ public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsSe
             // 处理getById返回null的情况
             return null; // 或者返回一个新的TJs实例,具体看业务需求
         }
-        JSONArray cBhList = js.getcBhList();
-        if (cBhList == null || cBhList.isEmpty()) {
+        if (StringUtils.isBlank(js.getcBhList())) {
             // 处理js.getcBhList()返回null或空列表的情况
             js.setProjects(new ArrayList<>()); // 设置空列表,避免后续调用空指针
             return js;
         }
+        List<String> projectIds = Arrays.stream(js.getcBhList().split(",")).collect(Collectors.toList());
         LambdaQueryWrapper<TXiangmu> xiangmuLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        xiangmuLambdaQueryWrapper.in(TXiangmu::getcId, cBhList);
+        xiangmuLambdaQueryWrapper.in(TXiangmu::getcId, projectIds);
         List<TXiangmu> projects = xiangmuService.list(xiangmuLambdaQueryWrapper);
         js.setProjects(projects);
         return js;

+ 40 - 9
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TOrderServiceImpl.java

@@ -2,20 +2,20 @@ package com.ylx.massage.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ylx.common.constant.MassageConstants;
+import com.ylx.common.exception.ServiceException;
 import com.ylx.common.utils.uuid.IdUtils;
 import com.ylx.massage.domain.*;
 import com.ylx.massage.enums.JsStatusEnum;
 import com.ylx.massage.enums.OrderStatusEnum;
 import com.ylx.massage.mapper.TOrderMapper;
-import com.ylx.massage.service.TJsService;
-import com.ylx.massage.service.TOrderService;
-import com.ylx.massage.service.TWxUserService;
-import com.ylx.massage.service.TXiangmuService;
+import com.ylx.massage.service.*;
+import com.ylx.massage.utils.OrderNumberGenerator;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -41,9 +41,15 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
     @Resource
     private TXiangmuService xiangmuService;
 
+    @Resource
+    private OrderNumberGenerator generator;
+
     @Resource
     private TJsService jsService;
 
+    @Resource
+    private TAddressService addressService;
+
 //    @Resource
 //    private TInfoService infoService;
 
@@ -53,12 +59,30 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
      * @param order
      */
     @Override
-    public String addOrder(TOrder order) {
-        String cId = IdUtils.fastSimpleUUID();
-        order.setcId(cId);
+    public TOrder addOrder(TOrder order) {
+
+        if(StringUtils.isBlank(order.getcJsId())){
+            throw new ServiceException("请选择技师");
+        }
+        if(order.getcGoods().isEmpty()){
+            throw new ServiceException("请选择项目");
+        }
+        //获取用户默认地址
+        TAddress address = addressService.getByOpenId(order.getcOpenId());
+        if(address == null){
+            throw new ServiceException("请先添加地址");
+        }
+
+        order.setcAddress(address.getAddress());
+        order.setcPhone(address.getPhone());
+        order.setcName(address.getUserName());
+        order.setAtlasAdd(address.getAtlasAdd());
+
+        order.setOrderNo(generator.generateNextOrderNumber(OrderNumberGenerator.KEY_PREFIX));
         order.setnStatus(OrderStatusEnum.WAIT_PAY.getCode());
         order.setDtCreateTime(LocalDateTime.now());
-        return save(order) ? cId : null;
+        save(order);
+        return order;
     }
 
     /**
@@ -195,7 +219,7 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
     public Boolean cancle(TOrder order) {
         // 获取订单信息
         // 根据orderid查询订单信息
-        TOrder orderNew = getById(order.getcId());
+        TOrder orderNew = gettOrder(order);
         //待接单
         if (Objects.equals(orderNew.getnStatus(), OrderStatusEnum.WAIT_JD.getCode())) {
             TWxUser user = wxUserService.getById(orderNew.getcOpenId());
@@ -238,6 +262,13 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
 
     }
 
+    private TOrder gettOrder(TOrder order) {
+        LambdaUpdateWrapper<TOrder> objectLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        objectLambdaUpdateWrapper.eq(TOrder::getOrderNo, order.getOrderNo());
+        return this.getOne(objectLambdaUpdateWrapper);
+    }
+
+
 
     @Override
     public Page<TOrder> getAll(Page<TOrder> page, TOrder param) {

+ 24 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TRechargeServiceImpl.java

@@ -1,11 +1,17 @@
 package com.ylx.massage.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ylx.common.core.domain.R;
 import com.ylx.massage.domain.TRecharge;
+import com.ylx.massage.domain.TWxUser;
 import com.ylx.massage.mapper.TRechargeMapper;
 import com.ylx.massage.service.TRechargeService;
+import com.ylx.massage.service.TWxUserService;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+
 
 /**
  * 充值记录表 服务实现类
@@ -13,4 +19,22 @@ import org.springframework.stereotype.Service;
 @Service
 public class TRechargeServiceImpl extends ServiceImpl<TRechargeMapper, TRecharge> implements TRechargeService {
 
+    @Resource
+    private TWxUserService wxUserService;
+
+    @Override
+    public R recharge(TRecharge recharge) {
+
+        //增加充值记录
+        recharge.setDtCreateTime(LocalDateTime.now());
+        save(recharge);
+
+        //todo 调用微信支付成功后增加账户金额
+
+        //增加个人账户金额
+        TWxUser user = wxUserService.getByOpenId(recharge.getcOpenId());
+        user.setdBalance(user.getdBalance().add(recharge.getdMoney()));
+        wxUserService.updateById(user);
+        return R.ok();
+    }
 }

+ 9 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TWxUserServiceImpl.java

@@ -1,11 +1,14 @@
 package com.ylx.massage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ylx.massage.domain.TWxUser;
 import com.ylx.massage.mapper.TWxUserMapper;
 import com.ylx.massage.service.TWxUserService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 
 /**
  * 服务实现类
@@ -13,4 +16,10 @@ import org.springframework.stereotype.Service;
 @Service
 public class TWxUserServiceImpl extends ServiceImpl<TWxUserMapper, TWxUser> implements TWxUserService {
 
+    @Override
+    public TWxUser getByOpenId(String openId) {
+        LambdaQueryWrapper<TWxUser> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TWxUser::getcOpenid,openId);
+        return getOne(wrapper);
+    }
 }

+ 9 - 9
nightFragrance-massage/src/main/java/com/ylx/massage/utils/BillNoUtil.java

@@ -50,15 +50,15 @@ public class BillNoUtil {
 ////        return batchGenerateCode("JSIRTP", new SimpleDateFormat("yyMMdd"), 3, 4);
 ////    }
 //
-//    /**
-//     * 批量获取Code
-//     *
-//     * @param prefix:业务场景,比如     PAYEE 表示收款
-//     * @param sdf:               日期格式化方式,如 yyyyMMdd
-//     * @param batchNum:          批量生成多少条,如 1000条
-//     * @param increaseFormatNum: 自增数格式化成多少位,如 5位
-//     * @return 生成的编码列表, 如[]
-//     */
+    /**
+     * 批量获取Code
+     *
+     * @param prefix:业务场景,比如     PAYEE 表示收款
+     * @param sdf:               日期格式化方式,如 yyyyMMdd
+     * @param batchNum:          批量生成多少条,如 1000条
+     * @param increaseFormatNum: 自增数格式化成多少位,如 5位
+     * @return 生成的编码列表, 如[]
+     */
 //    public List<String> batchGenerateCode(String prefix, DateFormat sdf, int batchNum, int increaseFormatNum) {
 //        if (null == prefix || sdf == null || batchNum <= 0) {
 //            return null;

+ 77 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/utils/OrderNumberGenerator.java

@@ -0,0 +1,77 @@
+package com.ylx.massage.utils;
+import com.ylx.common.constant.MassageConstants;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.core.script.DefaultRedisScript;
+import org.springframework.stereotype.Component;
+
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.util.Collections;
+
+@Component
+public class OrderNumberGenerator {
+
+    //订单单号前缀
+    public static final String KEY_PREFIX = "YORDER";
+    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
+
+    private final StringRedisTemplate stringRedisTemplate;
+
+    public OrderNumberGenerator(StringRedisTemplate stringRedisTemplate) {
+        this.stringRedisTemplate = stringRedisTemplate;
+    }
+
+    /**
+     * 生成并返回当天的下一个自增单号。
+     *
+     * @return 当天的下一个单号(格式:yyyyMMdd0001)
+     */
+    public String generateNextOrderNumber(String prefix) {
+
+        LocalDate today = LocalDate.now();
+        String currentDateStr = today.format(DATE_FORMATTER);
+
+        String key = MassageConstants.NUMBER + prefix + currentDateStr;
+        Long incrementResult = incrementByScript(key);
+        int sequence = incrementResult.intValue();
+        return prefix + currentDateStr + String.format("%05d", sequence);
+    }
+
+
+
+    public Long incrementByScript(String key) {
+        if (key == null || key.trim().isEmpty()) {
+            throw new IllegalArgumentException("Key cannot be null or empty");
+        }
+
+        // 假设 "script" 是一个从外部文件或安全的静态资源加载的Lua脚本
+        String script = "return redis.call('INCR', KEYS[1])";
+        DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>(script, Long.class);
+
+        try {
+            Long execute = stringRedisTemplate.execute(redisScript, Collections.singletonList(key));
+            stringRedisTemplate.expireAt(key,LocalDateTime.of(LocalDate.now(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant());
+            return execute;
+        } catch (Exception e) {
+            // 根据业务需求,这里可以选择抛出运行时异常或者返回特定的错误码
+            throw new RuntimeException("Failed to execute Redis script", e);
+        }
+    }
+
+
+    public static void main(String[] args) {
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime todayStart = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
+        LocalDateTime todayEnd = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
+
+        Instant instant = todayStart.atZone(ZoneId.systemDefault()).toInstant();
+
+        System.out.println("当前时间,当天的开始时间(日期+时分秒):"+ todayStart.format(dtf));
+        System.out.println("当前时间,当天的结束时间(日期+时分秒):"+ todayEnd.format(dtf));
+        System.out.println("当前的时间(只有日期)"+LocalDate.now());
+        System.out.println(instant);
+    }
+
+
+
+}

+ 9 - 4
nightFragrance-massage/src/main/resources/mapper/massage/TJsMapper.xml

@@ -4,9 +4,9 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ylx.massage.domain.TJs">
+        <id column="id" property="id"/>
         <id column="c_open_id" property="cOpenId"/>
-        <result column="c_bh_list" property="cBhList"
-                typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
+        <result column="c_bh_list" property="cBhList"/>
         <result column="c_img_list" property="cImgList"
                 typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
         <result column="c_sfz_img" property="cSfzImg"
@@ -35,7 +35,9 @@
     </resultMap>
 
     <select id="getAll" resultMap="BaseResultMap">
-        select js.c_open_id,
+        select
+        js.id,
+        js.c_open_id,
         js.c_bh_list,
         js.c_img_list,
         js.c_sfz_img,
@@ -72,6 +74,7 @@
         on
         temp.c_js_id = js.c_open_id
         <where>
+            js.is_delete = 0
             <if test="param.nameOrPhone != null and param.nameOrPhone != ''">
                 and (
                 js.c_nick_name like concat('%',#{param.nameOrPhone},'%')
@@ -92,10 +95,12 @@
             <if test="param.nStatus2 != null">
                 and js.n_status2 = #{param.nStatus2}
             </if>
-
             <if test="param.nTong != null">
                 and js.n_tong = #{param.nTong}
             </if>
+            <if test="param.projectId != null and param.projectId != ''">
+                AND FIND_IN_SET(#{param.projectId}, js.c_bh_list )
+            </if>
             <if test="param.ids != null and param.ids.size() > 0">
                 and js.c_open_id in
                 <foreach item="id" collection="param.ids" open="(" separator="," close=")">

+ 6 - 0
nightFragrance-massage/src/main/resources/mapper/massage/TOrderMapper.xml

@@ -3,6 +3,7 @@
 <mapper namespace="com.ylx.massage.mapper.TOrderMapper">
     <resultMap id="getAllMap" type="com.ylx.massage.domain.TOrder">
         <id column="c_id" property="cId"/>
+        <result column="order_no" property="orderNo"/>
         <result column="c_js_id" property="cJsId"/>
         <result column="c_open_id" property="cOpenId"/>
         <result column="c_goods" property="cGoods"
@@ -49,6 +50,7 @@
 
     <select id="getAll" resultMap="getAllMap">
         select t_order.c_id,
+               t_order.order_no,
                t_order.c_js_id,
                t_order.c_open_id,
                t_order.c_goods,
@@ -94,9 +96,13 @@
              t_wx_user on
                  t_wx_user.c_openid = t_order.c_open_id
         <where>
+            t_order.is_delete = 0 and t_js.is_delete = 0 and t_wx_user.is_delete = 0
             <if test="param.cId != null and param.cId != ''">
                 and t_order.c_id = #{ param.cId }
             </if>
+            <if test="param.order_no != null and param.order_no != ''">
+                and t_order.order_no = #{ param.orderNo }
+            </if>
             <if test="param.nStatus != null">
                 and t_order.n_status = #{ param.nStatus }
             </if>