Commit 13a5cccd by xuwenhao

12.4增加送水小程序相关功能

parent aef88495
...@@ -23,7 +23,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -23,7 +23,9 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 商品Controller * 商品Controller
...@@ -194,7 +196,21 @@ public class WaterGoodsController extends BaseController ...@@ -194,7 +196,21 @@ public class WaterGoodsController extends BaseController
waterGoodsVos.add(waterGoodsVo); waterGoodsVos.add(waterGoodsVo);
} }
} }
return getDataTable(waterGoodsVos); //按分类查询商品
List<Map<String,Object>> mapList = new ArrayList<>();
for (WaterGoodsType waterGoodsType : waterGoodsTypes) {
Map<String,Object> map = new HashMap<>();
List<WaterGoodsVo> waterGoodsVoList = new ArrayList<>();
for (WaterGoodsVo waterGoodsVo : waterGoodsVos) {
if (waterGoodsType.getId().equals(waterGoodsVo.getGoodsTypeId())){
waterGoodsVoList.add(waterGoodsVo);
}
}
map.put("goodsTypeName",waterGoodsType.getTypeName());
map.put("waterGoodsVoList",waterGoodsVoList);
mapList.add(map);
}
return getDataTable(mapList);
} }
/** /**
......
...@@ -52,17 +52,12 @@ public class WaterOrderController extends BaseController ...@@ -52,17 +52,12 @@ public class WaterOrderController extends BaseController
//转vo //转vo
WaterOrderVo waterOrderVo1 = new WaterOrderVo(); WaterOrderVo waterOrderVo1 = new WaterOrderVo();
BeanUtils.copyProperties(order,waterOrderVo1); BeanUtils.copyProperties(order,waterOrderVo1);
List<WaterOrderGoods> waterOrderGoodsList = new ArrayList<>();
for (WaterOrderGoods waterOrderGood : waterOrderGoods) { for (WaterOrderGoods waterOrderGood : waterOrderGoods) {
if (order.getId().equals(waterOrderGood.getOrderId())){ if (order.getId().equals(waterOrderGood.getOrderId())){
// waterOrderGoodsList.add(waterOrderGood);
waterOrderVo1.setWaterOrderGoods(waterOrderGood); waterOrderVo1.setWaterOrderGoods(waterOrderGood);
waterOrderVoList.add(waterOrderVo1); waterOrderVoList.add(waterOrderVo1);
} }
} }
// if (waterOrderGoodsList.size() > 0){
// waterOrderVo1.setWaterOrderGoodsList(waterOrderGoodsList);
// }
} }
} }
TableDataInfo tableDataInfo = getDataTable(waterOrderVoList); TableDataInfo tableDataInfo = getDataTable(waterOrderVoList);
...@@ -111,8 +106,29 @@ public class WaterOrderController extends BaseController ...@@ -111,8 +106,29 @@ public class WaterOrderController extends BaseController
public void export(HttpServletResponse response, WaterOrderVo waterOrderVo) public void export(HttpServletResponse response, WaterOrderVo waterOrderVo)
{ {
List<WaterOrder> list = waterOrderService.selectWaterOrderList(waterOrderVo); List<WaterOrder> list = waterOrderService.selectWaterOrderList(waterOrderVo);
ExcelUtil<WaterOrder> util = new ExcelUtil<WaterOrder>(WaterOrder.class); //返回的订单列表
util.exportExcel(response, list, "订单数据"); List<WaterOrderVo> waterOrderVoList = new ArrayList<>();
//查询所有订单商品
List<WaterOrderGoods> waterOrderGoods = waterOrderGoodsService.selectWaterOrderGoodsList(new WaterOrderGoods());
if (list.size() > 0){
for (WaterOrder order : list) {
//转vo
WaterOrderVo waterOrderVo1 = new WaterOrderVo();
BeanUtils.copyProperties(order,waterOrderVo1);
List<WaterOrderGoods> waterOrderGoodsList = new ArrayList<>();
for (WaterOrderGoods waterOrderGood : waterOrderGoods) {
if (order.getId().equals(waterOrderGood.getOrderId())){
waterOrderGoodsList.add(waterOrderGood);
}
}
if (waterOrderGoodsList.size() > 0){
waterOrderVo1.setWaterOrderGoodsList(waterOrderGoodsList);
}
waterOrderVoList.add(waterOrderVo1);
}
}
ExcelUtil<WaterOrderVo> util = new ExcelUtil<WaterOrderVo>(WaterOrderVo.class);
util.exportExcel(response, waterOrderVoList, "订单数据");
} }
/** /**
...@@ -161,4 +177,60 @@ public class WaterOrderController extends BaseController ...@@ -161,4 +177,60 @@ public class WaterOrderController extends BaseController
public AjaxResult updateOrderState(@RequestBody WaterOrderVo waterOrderVo){ public AjaxResult updateOrderState(@RequestBody WaterOrderVo waterOrderVo){
return toAjax(waterOrderService.updateOrderState(waterOrderVo)); return toAjax(waterOrderService.updateOrderState(waterOrderVo));
} }
/**
* 统计站点订单数量
*/
@GetMapping("/getOrderNumByStation")
public AjaxResult getOrderNumByStation(Long stationId){
return success(waterOrderService.getOrderNumByStation(stationId));
}
/**
* 根据站点查询订单
*/
@GetMapping("/getWaterOrderListByStationId")
public TableDataInfo getWaterOrderListByStationId(WaterOrderVo waterOrderVo){
//返回的订单列表
List<WaterOrderVo> waterOrderVoList = new ArrayList<>();
List<WaterOrder> list = waterOrderService.getWaterOrderListByStationId(waterOrderVo);
//查询所有订单商品
List<WaterOrderGoods> waterOrderGoods = waterOrderGoodsService.selectWaterOrderGoodsList(new WaterOrderGoods());
if (list.size() > 0){
for (WaterOrder order : list) {
//转vo
WaterOrderVo waterOrderVo1 = new WaterOrderVo();
BeanUtils.copyProperties(order,waterOrderVo1);
List<WaterOrderGoods> waterOrderGoodsList = new ArrayList<>();
for (WaterOrderGoods waterOrderGood : waterOrderGoods) {
if (order.getId().equals(waterOrderGood.getOrderId())){
// waterOrderGoodsList.add(waterOrderGood);
waterOrderVo1.setWaterOrderGoods(waterOrderGood);
waterOrderVoList.add(waterOrderVo1);
}
}
// if (waterOrderGoodsList.size() > 0){
// waterOrderVo1.setWaterOrderGoodsList(waterOrderGoodsList);
// }
waterOrderVoList.add(waterOrderVo1);
}
}
return getDataTable(waterOrderVoList);
}
/**
* 修改订单完成状态(送水端)
*/
@PostMapping("/updateCompleteState")
public AjaxResult updateCompleteState(@RequestBody WaterOrderVo waterOrderVo){
return toAjax(waterOrderService.updateCompleteState(waterOrderVo));
}
/**
* 修改订单确认状态(订水端)
*/
@PostMapping("/updateConfirmState")
public AjaxResult updateConfirmState(@RequestBody WaterOrderVo waterOrderVo){
return toAjax(waterOrderService.updateConfirmState(waterOrderVo));
}
} }
package com.qianhe.system.controller.api;
import com.qianhe.common.constant.Constants;
import com.qianhe.common.core.domain.AjaxResult;
import com.qianhe.common.core.domain.model.MpLoginUser;
import com.qianhe.common.core.domain.model.WxLoginBody;
import com.qianhe.common.exception.ServiceException;
import com.qianhe.common.utils.MessageUtils;
import com.qianhe.common.utils.StringUtils;
import com.qianhe.framework.manager.AsyncManager;
import com.qianhe.framework.manager.factory.AsyncFactory;
import com.qianhe.framework.util.UserInfoUtil;
import com.qianhe.framework.web.service.MpTokenService;
import com.qianhe.system.domain.WaterStationUser;
import com.qianhe.system.domain.WaterUser;
import com.qianhe.system.service.IWaterStationUserService;
import com.qianhe.system.service.api.IWxLoginService;
import com.qianhe.system.service.impl.WaterUserServiceImpl;
import com.qianhe.system.utils.SsAccessTokenUtils;
import com.qianhe.system.utils.SsWxUserInfoUtils;
import com.qianhe.system.utils.WxUserInfoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
import static com.qianhe.common.core.domain.AjaxResult.success;
@RestController
@RequestMapping("/ssWx")
public class SsWxLogin {
@Autowired
SsWxUserInfoUtils wxUserInfoUtils;
@Autowired
private WaterUserServiceImpl waterUserService;
@Autowired
private IWxLoginService wxLoginService;
@Autowired
private MpTokenService mpTokenService;
@Autowired
private UserInfoUtil userInfoUtil;
@Autowired
private IWaterStationUserService waterStationUserService;
/**
* 获取用户openid和session_key
* @param code 微信临时登录凭证
* @return
*/
@GetMapping("/getWxLoginInfo")
public AjaxResult getWxLoginInfo(String code){
//根据code查询微信用户的openid和session_key
Map<String, String> wxLoginInfo = wxUserInfoUtils.getWxLoginInfo(code);
return AjaxResult.success(wxLoginInfo);
}
/**
*
* 获取微信用户手机号
*/
@GetMapping("/getPhoneNumber")
public AjaxResult getPhoneNumber(@RequestParam("code") String code){
String wxUserPhone = wxUserInfoUtils.getWxUserPhone(code);
return AjaxResult.success().put("phoneNumber",wxUserPhone);
}
/**
* 小程序登录
* @param code 微信登录临时凭证
* @return
*/
@GetMapping("/login")
public AjaxResult login(@RequestParam("code") String code){
AjaxResult ajaxResult = AjaxResult.success();
//根据code查询微信用户的openid和session_key
Map<String, String> wxLoginInfo = wxUserInfoUtils.getWxLoginInfo(code);
WxLoginBody wxLoginBody = new WxLoginBody();
wxLoginBody.setOpenId(wxLoginInfo.get("openid"));
MpLoginUser login = wxLoginService.ssLogin(wxLoginBody);
if (StringUtils.isNull(login)) {
return AjaxResult.error("login error");
}
ajaxResult.put("loginInfo",wxLoginInfo);
ajaxResult.put("isNewUser",login.getIsNewUser());
AsyncManager.me().execute(AsyncFactory.recordLogininfor(login.getNickName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
String token = mpTokenService.createToken(login);
ajaxResult.put(Constants.TOKEN, token);
return ajaxResult;
}
/**
* 修改用户信息
*/
@PostMapping("/updateUser")
public AjaxResult updateUser(@RequestBody WaterUser waterUser){
return success(waterUserService.updateUserByOpenId(waterUser));
}
/**
* 获取用户信息
* @return
*/
@GetMapping("/getUserInfo")
public AjaxResult getUserInfo(){
//获取当前登录用户openid
String openId = userInfoUtil.getOpenId();
Map<String,Object> map = new HashMap<>();
//根据openid查询用户信息
WaterUser waterUser = waterUserService.selectUserByOpenId(openId);
map.put("userId",waterUser.getId());
map.put("nickName",waterUser.getNickName());
map.put("phoneNum",waterUser.getPhoneNum());
map.put("stationName",waterUser.getStationName());
map.put("userType",waterUser.getUserType());
map.put("userGender",waterUser.getUserGender());
//查询送水工站点信息
WaterStationUser waterStationUser = waterStationUserService.selectWaterStationUserByPhone(waterUser.getPhoneNum());
if (StringUtils.isNull(waterStationUser)){
throw new ServiceException("未查询到您管理的站点信息,请联系管理员!");
}
map.put("waterStationUser",waterStationUser);
return AjaxResult.success(map);
}
}
...@@ -65,6 +65,7 @@ public class WxLogin { ...@@ -65,6 +65,7 @@ public class WxLogin {
* @return * @return
*/ */
@GetMapping("/login") @GetMapping("/login")
public AjaxResult login(@RequestParam("code") String code){ public AjaxResult login(@RequestParam("code") String code){
AjaxResult ajaxResult = AjaxResult.success(); AjaxResult ajaxResult = AjaxResult.success();
......
...@@ -48,6 +48,9 @@ public class WaterGoodsCart { ...@@ -48,6 +48,9 @@ public class WaterGoodsCart {
/** 是否选中(1是,0否) */ /** 是否选中(1是,0否) */
private String isSelect; private String isSelect;
/** 上架状态 */
private String status;
/** 创建人 */ /** 创建人 */
private String createUser; private String createUser;
......
...@@ -28,6 +28,9 @@ public class WaterGoodsType ...@@ -28,6 +28,9 @@ public class WaterGoodsType
/** 名称 */ /** 名称 */
private String typeName; private String typeName;
/** 排序 */
private Integer sort;
/** 创建时间 */ /** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
......
...@@ -87,6 +87,12 @@ public class WaterOrder ...@@ -87,6 +87,12 @@ public class WaterOrder
@Excel(name = "订单状态(1待付款2待接单3进行中4已完成5已取消6已退款)") @Excel(name = "订单状态(1待付款2待接单3进行中4已完成5已取消6已退款)")
private Integer orderState; private Integer orderState;
/** 送水工完成状态(0未完成,1已完成,2已退款) */
private Integer completeState;
/** 用户确认状态(0未确认,1确认收货,2确认退款) */
private Integer confirmState;
/** 付款状态(0未付款1已付款) */ /** 付款状态(0未付款1已付款) */
@Excel(name = "付款状态(0未付款1已付款)") @Excel(name = "付款状态(0未付款1已付款)")
private Integer payState; private Integer payState;
...@@ -99,6 +105,9 @@ public class WaterOrder ...@@ -99,6 +105,9 @@ public class WaterOrder
@Excel(name = "银行返回支付成功code") @Excel(name = "银行返回支付成功code")
private String payNum; private String payNum;
/** 取消原因 */
private String cancelResult;
/** 用户地址id */ /** 用户地址id */
private Long userAddressId; private Long userAddressId;
......
...@@ -24,43 +24,36 @@ public class WaterOrderGoods ...@@ -24,43 +24,36 @@ public class WaterOrderGoods
private Long id; private Long id;
/** 订单id */ /** 订单id */
@Excel(name = "订单id")
private Long orderId; private Long orderId;
/** 订单编号 */ /** 订单编号 */
@Excel(name = "订单编号")
private String orderNum; private String orderNum;
/** 商品分类id */ /** 商品分类id */
@Excel(name = "商品分类id")
private Long goodsTypeId; private Long goodsTypeId;
/** 商品分类 */ /** 商品分类 */
@Excel(name = "商品分类")
private String goodsType; private String goodsType;
/** 规格详情 */ /** 规格详情 */
@Excel(name = "规格详情")
private String goodsSpe; private String goodsSpe;
/** 商品id */ /** 商品id */
@Excel(name = "商品id")
private Long goodsId; private Long goodsId;
/** 商品名称 */ /** 商品名称 */
@Excel(name = "品名称") @Excel(name = "品名称")
private String goodsTitle; private String goodsTitle;
/** 商品单价 */
@Excel(name = "售价")
private BigDecimal goodsPrice;
/** 商品数量 */ /** 商品数量 */
@Excel(name = "商品数量") @Excel(name = "数量")
private BigDecimal goodsNum; private BigDecimal goodsNum;
/** 商品单价 */
@Excel(name = "商品单价")
private BigDecimal goodsPrice;
/** 商品总价 */ /** 商品总价 */
@Excel(name = "商品总价") @Excel(name = "金额")
private BigDecimal goodsTotal; private BigDecimal goodsTotal;
/** 备注 */ /** 备注 */
...@@ -68,10 +61,8 @@ public class WaterOrderGoods ...@@ -68,10 +61,8 @@ public class WaterOrderGoods
/** 创建时间 */ /** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date createTime; private Date createTime;
/** 创建人 */ /** 创建人 */
@Excel(name = "创建人")
private String createUser; private String createUser;
} }
...@@ -36,11 +36,9 @@ public class WaterUser ...@@ -36,11 +36,9 @@ public class WaterUser
private Long phoneNum; private Long phoneNum;
/** 站点名称 */ /** 站点名称 */
@Excel(name = "站点名称")
private String stationName; private String stationName;
/** 用户类型 */ /** 用户类型 */
@Excel(name = "用户类型")
private String userType; private String userType;
/** 性别(1男0女) */ /** 性别(1男0女) */
......
...@@ -35,6 +35,13 @@ public interface WaterGoodsCartMapper { ...@@ -35,6 +35,13 @@ public interface WaterGoodsCartMapper {
int updateWaterGoodsCart(WaterGoodsCart waterGoodsCart); int updateWaterGoodsCart(WaterGoodsCart waterGoodsCart);
/** /**
* 修改购物车商品上架状态
* @param waterGoodsCart
* @return
*/
int updateGoodsStatus(WaterGoodsCart waterGoodsCart);
/**
* 删除购物车商品 * 删除购物车商品
* @param id * @param id
* @return * @return
......
...@@ -5,6 +5,7 @@ import com.qianhe.system.domain.WaterOrderGoods; ...@@ -5,6 +5,7 @@ import com.qianhe.system.domain.WaterOrderGoods;
import com.qianhe.system.vo.WaterOrderVo; import com.qianhe.system.vo.WaterOrderVo;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 订单Mapper接口 * 订单Mapper接口
...@@ -92,4 +93,18 @@ public interface WaterOrderMapper ...@@ -92,4 +93,18 @@ public interface WaterOrderMapper
*/ */
void batchInsertWaterOrderGoods(List<WaterOrderGoods> list); void batchInsertWaterOrderGoods(List<WaterOrderGoods> list);
/**
* 统计站点订单数量
* @param waterOrderVo
* @return
*/
Map<String, Integer> getOrderNumByStation(WaterOrderVo waterOrderVo);
/**
* 根据站点查询订单
*
* @param waterOrderVo 订单
* @return 订单集合
*/
public List<WaterOrder> getWaterOrderListByStationId(WaterOrderVo waterOrderVo);
} }
...@@ -2,6 +2,7 @@ package com.qianhe.system.mapper; ...@@ -2,6 +2,7 @@ package com.qianhe.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qianhe.system.domain.WaterStationUser; import com.qianhe.system.domain.WaterStationUser;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -60,4 +61,11 @@ public interface WaterStationUserMapper extends BaseMapper<WaterStationUser> ...@@ -60,4 +61,11 @@ public interface WaterStationUserMapper extends BaseMapper<WaterStationUser>
* @return 结果 * @return 结果
*/ */
public int deleteWaterStationUserByIds(Long[] ids); public int deleteWaterStationUserByIds(Long[] ids);
/**
* 根据手机号查询站点用户
* @param phone
* @return
*/
WaterStationUser selectWaterStationUserByPhone(@Param("phone") Long phone);
} }
package com.qianhe.system.service; package com.qianhe.system.service;
import com.qianhe.common.core.domain.AjaxResult;
import com.qianhe.system.domain.WaterOrder; import com.qianhe.system.domain.WaterOrder;
import com.qianhe.system.vo.WaterOrderVo; import com.qianhe.system.vo.WaterOrderVo;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 订单Service接口 * 订单Service接口
...@@ -67,4 +69,33 @@ public interface IWaterOrderService ...@@ -67,4 +69,33 @@ public interface IWaterOrderService
* @return * @return
*/ */
int updateOrderState(WaterOrderVo waterOrderVo); int updateOrderState(WaterOrderVo waterOrderVo);
/**
* 统计站点订单数量
* @param stationId
* @return
*/
Map<String,Integer> getOrderNumByStation(Long stationId);
/**
* 根据站点查询订单
*
* @param waterOrderVo 订单
* @return 订单集合
*/
public List<WaterOrder> getWaterOrderListByStationId(WaterOrderVo waterOrderVo);
/**
* 修改订单完成状态(送水端)
* @param waterOrderVo
* @return
*/
int updateCompleteState(WaterOrderVo waterOrderVo);
/**
* 修改订单确认状态(订水端)
* @param waterOrderVo
* @return
*/
int updateConfirmState(WaterOrderVo waterOrderVo);
} }
...@@ -60,4 +60,12 @@ public interface IWaterStationUserService extends IService<WaterStationUser> ...@@ -60,4 +60,12 @@ public interface IWaterStationUserService extends IService<WaterStationUser>
* @return 结果 * @return 结果
*/ */
public int deleteWaterStationUserById(Long id); public int deleteWaterStationUserById(Long id);
/**
* 根据手机号查询站点用户
*
* @param phone 站点用户手机号
* @return 站点用户
*/
public WaterStationUser selectWaterStationUserByPhone(Long phone);
} }
...@@ -4,6 +4,17 @@ import com.qianhe.common.core.domain.model.MpLoginUser; ...@@ -4,6 +4,17 @@ import com.qianhe.common.core.domain.model.MpLoginUser;
import com.qianhe.common.core.domain.model.WxLoginBody; import com.qianhe.common.core.domain.model.WxLoginBody;
public interface IWxLoginService { public interface IWxLoginService {
/**
* 订水端登录
* @param wxLoginBody
* @return
*/
MpLoginUser login(WxLoginBody wxLoginBody); MpLoginUser login(WxLoginBody wxLoginBody);
/**
* 送水端登录
* @param wxLoginBody
* @return
*/
MpLoginUser ssLogin(WxLoginBody wxLoginBody);
} }
...@@ -35,6 +35,8 @@ public class WaterGoodsServiceImpl implements IWaterGoodsService ...@@ -35,6 +35,8 @@ public class WaterGoodsServiceImpl implements IWaterGoodsService
private WaterStationMapper waterStationMapper; private WaterStationMapper waterStationMapper;
@Autowired @Autowired
private WaterGoodsTypeMapper waterGoodsTypeMapper; private WaterGoodsTypeMapper waterGoodsTypeMapper;
@Autowired
private WaterGoodsCartMapper waterGoodsCartMapper;
/** /**
* 查询商品 * 查询商品
...@@ -186,6 +188,16 @@ public class WaterGoodsServiceImpl implements IWaterGoodsService ...@@ -186,6 +188,16 @@ public class WaterGoodsServiceImpl implements IWaterGoodsService
insertGoodsDetailsImgs(waterGoodsVo); insertGoodsDetailsImgs(waterGoodsVo);
//新增商品关联规格 //新增商品关联规格
insertWaterGoodsSpe(waterGoodsVo); insertWaterGoodsSpe(waterGoodsVo);
//判断商品是否下架,下架后该商品不可在进行购买,所有用户购物车中如有该商品,则状态改为已下架,不可进行购买
if(StringUtils.isNotNull(waterGoodsVo.getStatus())){
if (waterGoodsVo.getStatus() == 0){
//下架状态 修改所有用户购物车中该商品的状态
WaterGoodsCart waterGoodsCart = new WaterGoodsCart();
waterGoodsCart.setGoodsId(waterGoodsVo.getId());
waterGoodsCart.setStatus("0");
waterGoodsCartMapper.updateGoodsStatus(waterGoodsCart);
}
}
return waterGoodsMapper.updateWaterGoods(waterGoodsVo); return waterGoodsMapper.updateWaterGoods(waterGoodsVo);
} }
......
package com.qianhe.system.service.impl; package com.qianhe.system.service.impl;
import com.qianhe.common.exception.ServiceException;
import com.qianhe.common.utils.DateUtils; import com.qianhe.common.utils.DateUtils;
import com.qianhe.common.utils.StringUtils; import com.qianhe.common.utils.StringUtils;
import com.qianhe.system.domain.WaterGoods; import com.qianhe.system.domain.WaterGoods;
...@@ -18,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -18,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Random; import java.util.Random;
/** /**
...@@ -171,6 +173,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService ...@@ -171,6 +173,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional
public int deleteWaterOrderByIds(Long[] ids) public int deleteWaterOrderByIds(Long[] ids)
{ {
//批量删除订单商品 //批量删除订单商品
...@@ -185,6 +188,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService ...@@ -185,6 +188,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional
public int deleteWaterOrderById(Long id) public int deleteWaterOrderById(Long id)
{ {
return waterOrderMapper.deleteWaterOrderById(id); return waterOrderMapper.deleteWaterOrderById(id);
...@@ -196,7 +200,58 @@ public class WaterOrderServiceImpl implements IWaterOrderService ...@@ -196,7 +200,58 @@ public class WaterOrderServiceImpl implements IWaterOrderService
* @return * @return
*/ */
@Override @Override
@Transactional
public int updateOrderState(WaterOrderVo waterOrderVo) { public int updateOrderState(WaterOrderVo waterOrderVo) {
//接单时需再次查看该订单是否已经被用户所取消
if (waterOrderVo.getOrderState() == 3){
WaterOrder waterOrder = waterOrderMapper.selectWaterOrderById(waterOrderVo.getId());
if (waterOrder.getOrderState() == 5){
throw new ServiceException("该订单已被用户取消!");
}
}
return waterOrderMapper.updateWaterOrder(waterOrderVo);
}
/**
* 统计站点订单数量
* @param stationId
* @return
*/
@Override
public Map<String, Integer> getOrderNumByStation(Long stationId) {
WaterOrderVo waterOrderVo = new WaterOrderVo();
waterOrderVo.setStationId(stationId);
waterOrderVo.setCreateTime(DateUtils.getNowDate());
return waterOrderMapper.getOrderNumByStation(waterOrderVo);
}
/**
* 根据站点查询订单信息
* @param waterOrderVo 订单
* @return
*/
@Override
public List<WaterOrder> getWaterOrderListByStationId(WaterOrderVo waterOrderVo) {
return waterOrderMapper.getWaterOrderListByStationId(waterOrderVo);
}
/**
* 修改订单完成状态(送水端)
* @param waterOrderVo
* @return
*/
@Override
public int updateCompleteState(WaterOrderVo waterOrderVo) {
return waterOrderMapper.updateWaterOrder(waterOrderVo);
}
/**
* 修改订单确认状态(订水端)
* @param waterOrderVo
* @return
*/
@Override
public int updateConfirmState(WaterOrderVo waterOrderVo) {
return waterOrderMapper.updateWaterOrder(waterOrderVo); return waterOrderMapper.updateWaterOrder(waterOrderVo);
} }
} }
...@@ -95,4 +95,14 @@ public class WaterStationUserServiceImpl extends ServiceImpl<WaterStationUserMap ...@@ -95,4 +95,14 @@ public class WaterStationUserServiceImpl extends ServiceImpl<WaterStationUserMap
{ {
return waterStationUserMapper.deleteWaterStationUserById(id); return waterStationUserMapper.deleteWaterStationUserById(id);
} }
/**
* 根据手机号查询站点用户
* @param phone 站点用户手机号
* @return
*/
@Override
public WaterStationUser selectWaterStationUserByPhone(Long phone) {
return waterStationUserMapper.selectWaterStationUserByPhone(phone);
}
} }
...@@ -32,6 +32,36 @@ public class WxLoginServiceImpl implements IWxLoginService { ...@@ -32,6 +32,36 @@ public class WxLoginServiceImpl implements IWxLoginService {
//不存在,新增用户 //不存在,新增用户
WaterUser waterUser = new WaterUser(); WaterUser waterUser = new WaterUser();
waterUser.setNickName("微信用户"); waterUser.setNickName("微信用户");
waterUser.setUserType("1");
waterUser.setOpenId(wxLoginBody.getOpenId());
waterUser.setCreateTime(DateUtils.getNowDate());
waterUserMapper.insertWaterUser(waterUser);
MpLoginUser loginUser = new MpLoginUser();
loginUser.setOpenId(wxLoginBody.getOpenId());
loginUser.setUserId(waterUser.getId());
loginUser.setNickName("微信用户");
loginUser.setIsNewUser("1");
return loginUser;
}
@Override
public MpLoginUser ssLogin(WxLoginBody wxLoginBody) {
//根据用户openid查询用户是否存在
WaterUser user = waterUserMapper.selectUserByOpenId(wxLoginBody.getOpenId());
if (StringUtils.isNotNull(user)){
//存在
MpLoginUser loginUser = new MpLoginUser();
loginUser.setOpenId(wxLoginBody.getOpenId());
loginUser.setUserId(user.getId());
loginUser.setNickName(user.getNickName());
loginUser.setIsNewUser("0");
return loginUser;
}
//不存在,新增用户
WaterUser waterUser = new WaterUser();
waterUser.setNickName("微信用户");
waterUser.setUserType("2");
waterUser.setOpenId(wxLoginBody.getOpenId()); waterUser.setOpenId(wxLoginBody.getOpenId());
waterUser.setCreateTime(DateUtils.getNowDate()); waterUser.setCreateTime(DateUtils.getNowDate());
waterUserMapper.insertWaterUser(waterUser); waterUserMapper.insertWaterUser(waterUser);
......
package com.qianhe.system.utils;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.qianhe.common.core.redis.RedisCache;
import com.qianhe.common.utils.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class SsAccessTokenUtils {
@Value("${sswx.access-token-uri}")
private String accessTokenUri;
private static Logger log = LoggerFactory.getLogger(SsAccessTokenUtils.class);
@Autowired
public RedisCache redisCache;
/**
* 获取token
* @return
* @throws Exception
*/
public String getToken(){
String token = redisCache.getCacheObject("sswx_access_token");
if (StringUtils.isEmpty(token)){
try {
String url = accessTokenUri;
// 利用hutool的http工具类请求获取access_token
String result = HttpUtil.get(url);
// 将结果解析为json
JSONObject jsonObject = JSONUtil.parseObj(result);
// 获取access_token
String accessToken = (String) jsonObject.get("access_token");
if (!StringUtils.isEmpty(accessToken)) {
token = accessToken;
log.info(accessToken);
// 将access_token存入redis
redisCache.setCacheObject("sswx_access_token", accessToken, 7200, TimeUnit.MILLISECONDS);
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
return token;
}
}
package com.qianhe.system.utils;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
public class SsWxUserInfoUtils {
@Value("${sswx.appId}")
private String appId;
@Value("${sswx.appSecret}")
private String appSecret;
@Autowired
SsAccessTokenUtils accessTokenUtils;
private static Logger log = LoggerFactory.getLogger(SsWxUserInfoUtils.class);
/**
* 获取openid喝session_key
* @param code
* @return
*/
public Map<String, String> getWxLoginInfo(String code) {
//微信登录凭证校验
String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=authorization_code";
//利用hutool发起get请求
String result = HttpUtil.get(url);
//使用 hutool 解析json
JSONObject jsonObject = JSONUtil.parseObj(result);
//获取会话密钥
String session_key = (String) jsonObject.get("session_key");
//获取用户在开放平台的唯一标识符
String unionid = (String) jsonObject.get("unionid");
//获取用户唯一标识
String openid = (String) jsonObject.get("openid");
Map<String,String> map = new HashMap<>();
map.put("openid",openid);
map.put("session_key",session_key);
return map;
}
/**
* 获取用户手机号
*/
public String getWxUserPhone(String code){
//获取accessToken
String accessToken = accessTokenUtils.getToken();
//获取phone
String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber"
+ "?access_token=" + accessToken;
Map<String, String> param = new HashMap<>();
param.put("code",code);
JSONObject wxJson = JSONUtil.parseObj(HttpClientUtil.doPost(url, param));
//返回手机号信息
JSONObject phone_info = JSONUtil.parseObj(wxJson.get("phone_info"));
//用户绑定的手机号(国外手机号会有区号)
String phoneNumber = (String) phone_info.get("phoneNumber");
return phoneNumber;
}
// /**
// * 解密用户手机号 (已废弃)
// *
// * @param encryptedData 包括敏感数据在内的完整用户信息的加密数据
// * @param iv 加密算法的初始向量
// */
// public String getMobile(String encryptedData, String sesskey, String iv) {
// String result = decryptData(encryptedData, sesskey, iv);
// if (result == null) {
// return null;
// }
// Map<String, String> map = new JSONObject(result).toBean(Map.class);
// return map.get("phoneNumber");
// }
//
// /**
// * (已废弃)
// * @param encryptedData
// * @param sessionKey
// * @param iv
// * @return
// */
// public String decryptData(String encryptedData, String sessionKey, String iv) {
// // 被加密的数据
// byte[] dataByte = Base64Utils.decode(encryptedData.getBytes());
// // 加密秘钥
// byte[] keyByte = Base64Utils.decode(sessionKey.getBytes());
// // 偏移量
// byte[] ivByte = Base64Utils.decode(iv.getBytes());
// try {
// // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
// int base = 16;
// if (keyByte.length % base != 0) {
// int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
// byte[] temp = new byte[groups * base];
// Arrays.fill(temp, (byte) 0);
// System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
// keyByte = temp;
// }
// // 初始化
// Security.addProvider(new BouncyCastleProvider());
// Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
// SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
// AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
// parameters.init(new IvParameterSpec(ivByte));
// // 初始化
// cipher.init(Cipher.DECRYPT_MODE, spec, parameters);
// byte[] resultByte = cipher.doFinal(dataByte);
// if (null != resultByte && resultByte.length > 0) {
// String result = new String(resultByte, "UTF-8");
// return result;
// }
// } catch (Exception e) {
// log.error(e.getMessage(), e);
// }
// return null;
// }
}
...@@ -78,63 +78,61 @@ public class WxUserInfoUtils { ...@@ -78,63 +78,61 @@ public class WxUserInfoUtils {
} }
// /**
// * 解密用户手机号 (已废弃)
/** // *
* 解密用户手机号 (已废弃) // * @param encryptedData 包括敏感数据在内的完整用户信息的加密数据
* // * @param iv 加密算法的初始向量
* @param encryptedData 包括敏感数据在内的完整用户信息的加密数据 // */
* @param iv 加密算法的初始向量 // public String getMobile(String encryptedData, String sesskey, String iv) {
*/ // String result = decryptData(encryptedData, sesskey, iv);
public String getMobile(String encryptedData, String sesskey, String iv) { // if (result == null) {
String result = decryptData(encryptedData, sesskey, iv); // return null;
if (result == null) { // }
return null; // Map<String, String> map = new JSONObject(result).toBean(Map.class);
} // return map.get("phoneNumber");
Map<String, String> map = new JSONObject(result).toBean(Map.class); // }
return map.get("phoneNumber"); //
} // /**
// * (已废弃)
/** // * @param encryptedData
* (已废弃) // * @param sessionKey
* @param encryptedData // * @param iv
* @param sessionKey // * @return
* @param iv // */
* @return // public String decryptData(String encryptedData, String sessionKey, String iv) {
*/ // // 被加密的数据
public String decryptData(String encryptedData, String sessionKey, String iv) { // byte[] dataByte = Base64Utils.decode(encryptedData.getBytes());
// 被加密的数据 // // 加密秘钥
byte[] dataByte = Base64Utils.decode(encryptedData.getBytes()); // byte[] keyByte = Base64Utils.decode(sessionKey.getBytes());
// 加密秘钥 // // 偏移量
byte[] keyByte = Base64Utils.decode(sessionKey.getBytes()); // byte[] ivByte = Base64Utils.decode(iv.getBytes());
// 偏移量 // try {
byte[] ivByte = Base64Utils.decode(iv.getBytes()); // // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
try { // int base = 16;
// 如果密钥不足16位,那么就补足. 这个if 中的内容很重要 // if (keyByte.length % base != 0) {
int base = 16; // int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
if (keyByte.length % base != 0) { // byte[] temp = new byte[groups * base];
int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0); // Arrays.fill(temp, (byte) 0);
byte[] temp = new byte[groups * base]; // System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
Arrays.fill(temp, (byte) 0); // keyByte = temp;
System.arraycopy(keyByte, 0, temp, 0, keyByte.length); // }
keyByte = temp; // // 初始化
} // Security.addProvider(new BouncyCastleProvider());
// 初始化 // Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
Security.addProvider(new BouncyCastleProvider()); // SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC"); // AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
SecretKeySpec spec = new SecretKeySpec(keyByte, "AES"); // parameters.init(new IvParameterSpec(ivByte));
AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES"); // // 初始化
parameters.init(new IvParameterSpec(ivByte)); // cipher.init(Cipher.DECRYPT_MODE, spec, parameters);
// 初始化 // byte[] resultByte = cipher.doFinal(dataByte);
cipher.init(Cipher.DECRYPT_MODE, spec, parameters); // if (null != resultByte && resultByte.length > 0) {
byte[] resultByte = cipher.doFinal(dataByte); // String result = new String(resultByte, "UTF-8");
if (null != resultByte && resultByte.length > 0) { // return result;
String result = new String(resultByte, "UTF-8"); // }
return result; // } catch (Exception e) {
} // log.error(e.getMessage(), e);
} catch (Exception e) { // }
log.error(e.getMessage(), e); // return null;
} // }
return null;
}
} }
...@@ -14,154 +14,136 @@ public class WaterOrderVo { ...@@ -14,154 +14,136 @@ public class WaterOrderVo {
private Long id; private Long id;
/** 订单编号(生成规则当前年月日+当天下单0001开始+随机生成4位英文字母) */
@Excel(name = "订单编号(生成规则当前年月日+当天下单0001开始+随机生成4位英文字母)")
private String orderNum;
/** 用户id */ /** 用户id */
@Excel(name = "用户id")
private Long userId; private Long userId;
/** 用户名字 */ /** 用户名字 */
@Excel(name = "用户名字") @Excel(name = "下单用户", needMerge = true)
private String userName; private String userName;
/** 订单编号(生成规则当前年月日+当天下单0001开始+随机生成4位英文字母) */
@Excel(name = "订单编号", needMerge = true)
private String orderNum;
/** 用户手机号 */ /** 用户手机号 */
@Excel(name = "用户手机号")
private Long userPhone; private Long userPhone;
/** 用户省 */ /** 用户省 */
@Excel(name = "用户省")
private String userProvince; private String userProvince;
/** 用户城市 */ /** 用户城市 */
@Excel(name = "用户城市")
private String userCity; private String userCity;
/** 用户区 */ /** 用户区 */
@Excel(name = "用户区")
private String userArea; private String userArea;
/** 用户详细地址 */ /** 用户详细地址 */
@Excel(name = "用户详细地址")
private String userAddress; private String userAddress;
/** 站点id */ /** 站点id */
@Excel(name = "站点id")
private Long stationId; private Long stationId;
/** 站点名字 */ /** 站点名字 */
@Excel(name = "站点名字") @Excel(name = "站点名字", needMerge = true)
private String stationName; private String stationName;
/** 站点手机号 */ /** 站点手机号 */
@Excel(name = "站点手机号")
private Long stationPhone; private Long stationPhone;
/** 站点省份 */ /** 站点省份 */
@Excel(name = "站点省份")
private String stationProvince; private String stationProvince;
/** 站点城市 */ /** 站点城市 */
@Excel(name = "站点城市")
private String stationCity; private String stationCity;
/** 站点市区 */ /** 站点市区 */
@Excel(name = "站点市区")
private String stationArea; private String stationArea;
/** 站点详细地址 */ /** 站点详细地址 */
@Excel(name = "站点详细地址")
private String stationAddress; private String stationAddress;
/** 支付方式(1银行2水票) */
@Excel(name = "支付方式", readConverterExp = "1=银行支付,2=水票支付", needMerge = true)
private Integer payType;
/** 订单状态(1待付款2待接单3进行中4已完成5已取消6已退款) */ /** 订单状态(1待付款2待接单3进行中4已完成5已取消6已退款) */
@Excel(name = "订单状态(1待付款2待接单3进行中4已完成5已取消6已退款)") @Excel(name = "订单状态", readConverterExp = "1=待付款,2=待接单,3=进行中,4=已完成,5=已取消,6=已退款", needMerge = true)
private Integer orderState; private Integer orderState;
/** 送水工完成状态(0未完成,1已完成,2已退款) */
private Integer completeState;
/** 用户确认状态(0未确认,1确认收货,2确认退款) */
private Integer confirmState;
/** 付款状态(0未付款1已付款) */ /** 付款状态(0未付款1已付款) */
@Excel(name = "付款状态(0未付款1已付款)")
private Integer payState; private Integer payState;
/** 支付方式(1银行2水票) */
@Excel(name = "支付方式(1银行2水票)")
private Integer payType;
/** 银行返回支付成功code */ /** 银行返回支付成功code */
@Excel(name = "银行返回支付成功code")
private String payNum; private String payNum;
/** 取消原因 */
private String cancelResult;
/** 用户地址id */ /** 用户地址id */
private Long userAddressId; private Long userAddressId;
/** 收货人名字 */ /** 收货人名字 */
@Excel(name = "收货人名字")
private String name; private String name;
/** 省 */ /** 省 */
@Excel(name = "省")
private String province; private String province;
/** 市 */ /** 市 */
@Excel(name = "市")
private String city; private String city;
/** 区 */ /** 区 */
@Excel(name = "区")
private String area; private String area;
/** 详细地址 */ /** 详细地址 */
@Excel(name = "详细地址")
private String address; private String address;
/** 收货人手机号 */ /** 收货人手机号 */
@Excel(name = "收货人手机号")
private Long mobile; private Long mobile;
/** 送货时间 */ /** 送货时间 */
@Excel(name = "送货时间")
private String delieverTime; private String delieverTime;
/** 送水工名字 */ /** 送水工名字 */
@Excel(name = "送水工名字")
private String delieverName; private String delieverName;
/** 送水工电话 */ /** 送水工电话 */
@Excel(name = "送水工电话")
private String delieverMobile; private String delieverMobile;
/** 创建时间 */ /** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
/** 创建人 */ /** 创建人 */
@Excel(name = "创建人")
private String createUser; private String createUser;
/** 送达时间 */ /** 送达时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "送达时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date delieverOver; private Date delieverOver;
/** 收货时间 */ /** 收货时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "收货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date takeTime; private Date takeTime;
/** 完成时间 */ /** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date finishTime; private Date finishTime;
/** 备注 */ /** 备注 */
@Excel(name = "备注") @Excel(name = "备注", needMerge = true)
private String remark; private String remark;
/** 商品总价 */ /** 商品总价 */
@Excel(name = "商品总价")
private BigDecimal goodsVal; private BigDecimal goodsVal;
/** 订单类型(1普通订单2退款订单) */ /** 订单类型(1普通订单2退款订单) */
@Excel(name = "订单类型", readConverterExp = "1=普通订单2退款订单")
private Integer orderType; private Integer orderType;
/** 开始时间 */ /** 开始时间 */
...@@ -174,5 +156,6 @@ public class WaterOrderVo { ...@@ -174,5 +156,6 @@ public class WaterOrderVo {
private WaterOrderGoods waterOrderGoods; private WaterOrderGoods waterOrderGoods;
/** 商品 */ /** 商品 */
@Excel(name = "商品")
private List<WaterOrderGoods> waterOrderGoodsList; private List<WaterOrderGoods> waterOrderGoodsList;
} }
...@@ -130,7 +130,14 @@ xss: ...@@ -130,7 +130,14 @@ xss:
# 匹配链接 # 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/* urlPatterns: /system/*,/monitor/*,/tool/*
# 订水端小程序
wx: wx:
appId: wxcabea5c944c4327c appId: wxcabea5c944c4327c
appSecret: bd486fd54bd1ea5e9b198911d765ce6a appSecret: bd486fd54bd1ea5e9b198911d765ce6a
access-token-uri: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${wx.appId}&secret=${wx.appSecret} access-token-uri: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${wx.appId}&secret=${wx.appSecret}
# 送水端小程序
sswx:
appId: wxcabea5c944c4327c
appSecret: bd486fd54bd1ea5e9b198911d765ce6a
access-token-uri: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${sswx.appId}&secret=${sswx.appSecret}
...@@ -18,13 +18,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -18,13 +18,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="goodsNum" column="goods_num" /> <result property="goodsNum" column="goods_num" />
<result property="goodsTotal" column="goods_total" /> <result property="goodsTotal" column="goods_total" />
<result property="isSelect" column="is_select" /> <result property="isSelect" column="is_select" />
<result property="status" column="status" />
<result property="createUser" column="create_user" /> <result property="createUser" column="create_user" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
</resultMap> </resultMap>
<sql id="selectWaterGoodsCartVo"> <sql id="selectWaterGoodsCartVo">
select id, user_id, goods_id, goods_name, goods_type_id, goods_type_name, select id, user_id, goods_id, goods_name, goods_type_id, goods_type_name,
goods_spe_id, goods_spe_val_id, goods_spe_val, goods_price, goods_num, goods_total, is_select, create_user, create_time goods_spe_id, goods_spe_val_id, goods_spe_val, goods_price, goods_num, goods_total, is_select, status, create_user, create_time
from water_goods_cart from water_goods_cart
</sql> </sql>
...@@ -58,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -58,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="goodsNum != null">goods_num,</if> <if test="goodsNum != null">goods_num,</if>
<if test="goodsTotal != null">goods_total,</if> <if test="goodsTotal != null">goods_total,</if>
<if test="isSelect != null">is_select,</if> <if test="isSelect != null">is_select,</if>
<if test="status != null">status,</if>
<if test="createUser != null">create_user,</if> <if test="createUser != null">create_user,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
</trim> </trim>
...@@ -73,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -73,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="goodsNum != null">#{goodsNum},</if> <if test="goodsNum != null">#{goodsNum},</if>
<if test="goodsTotal != null">#{goodsTotal},</if> <if test="goodsTotal != null">#{goodsTotal},</if>
<if test="isSelect != null">#{isSelect},</if> <if test="isSelect != null">#{isSelect},</if>
<if test="status != null">#{status},</if>
<if test="createUser != null">(select nick_name from water_user where id = #{createUser}),</if> <if test="createUser != null">(select nick_name from water_user where id = #{createUser}),</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
</trim> </trim>
...@@ -92,12 +95,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -92,12 +95,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="goodsNum != null">goods_num = #{goodsNum},</if> <if test="goodsNum != null">goods_num = #{goodsNum},</if>
<if test="goodsTotal != null">goods_total = #{goodsTotal},</if> <if test="goodsTotal != null">goods_total = #{goodsTotal},</if>
<if test="isSelect != null">is_select = #{isSelect},</if> <if test="isSelect != null">is_select = #{isSelect},</if>
<if test="status != null">status = #{status},</if>
<if test="createUser != null">create_user = #{createUser},</if> <if test="createUser != null">create_user = #{createUser},</if>
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>
<update id="updateGoodsStatus" parameterType="WaterGoodsCart">
update water_goods_cart set status = #{status} where goods_id = #{goodsId}
</update>
<update id="deleteWaterGoodsCartById" parameterType="Long"> <update id="deleteWaterGoodsCartById" parameterType="Long">
update water_goods_cart set del_flag = '1' where id = #{id} update water_goods_cart set del_flag = '1' where id = #{id}
</update> </update>
......
...@@ -7,11 +7,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -7,11 +7,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="WaterGoodsType" id="WaterGoodsTypeResult"> <resultMap type="WaterGoodsType" id="WaterGoodsTypeResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="typeName" column="type_name" /> <result property="typeName" column="type_name" />
<result property="sort" column="sort" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
</resultMap> </resultMap>
<sql id="selectWaterGoodsTypeVo"> <sql id="selectWaterGoodsTypeVo">
select id, type_name, create_time from water_goods_type select id, type_name, sort, create_time from water_goods_type
</sql> </sql>
<select id="selectWaterGoodsTypeList" parameterType="WaterGoodsType" resultMap="WaterGoodsTypeResult"> <select id="selectWaterGoodsTypeList" parameterType="WaterGoodsType" resultMap="WaterGoodsTypeResult">
...@@ -20,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -20,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
del_flag = '0' del_flag = '0'
<if test="typeName != null and typeName != ''"> and type_name like concat('%', #{typeName}, '%')</if> <if test="typeName != null and typeName != ''"> and type_name like concat('%', #{typeName}, '%')</if>
</where> </where>
order by create_time DESC order by sort
</select> </select>
<select id="selectWaterGoodsTypeById" parameterType="Long" resultMap="WaterGoodsTypeResult"> <select id="selectWaterGoodsTypeById" parameterType="Long" resultMap="WaterGoodsTypeResult">
...@@ -32,10 +33,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -32,10 +33,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
insert into water_goods_type insert into water_goods_type
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="typeName != null">type_name,</if> <if test="typeName != null">type_name,</if>
<if test="sort != null">sort,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="typeName != null">#{typeName},</if> <if test="typeName != null">#{typeName},</if>
<if test="sort != null">#{sort},</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
</trim> </trim>
</insert> </insert>
...@@ -44,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -44,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update water_goods_type update water_goods_type
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="typeName != null">type_name = #{typeName},</if> <if test="typeName != null">type_name = #{typeName},</if>
<if test="sort != null">sort = #{sort},</if>
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
</trim> </trim>
where id = #{id} where id = #{id}
......
...@@ -22,9 +22,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -22,9 +22,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="stationArea" column="station_area" /> <result property="stationArea" column="station_area" />
<result property="stationAddress" column="station_address" /> <result property="stationAddress" column="station_address" />
<result property="orderState" column="order_state" /> <result property="orderState" column="order_state" />
<result property="completeState" column="complete_state" />
<result property="confirmState" column="confirm_state" />
<result property="payState" column="pay_state" /> <result property="payState" column="pay_state" />
<result property="payType" column="pay_type" /> <result property="payType" column="pay_type" />
<result property="payNum" column="pay_num" /> <result property="payNum" column="pay_num" />
<result property="cancelResult" column="cancel_result" />
<result property="userAddressId" column="user_address_id" />
<result property="name" column="name" /> <result property="name" column="name" />
<result property="province" column="province" /> <result property="province" column="province" />
<result property="city" column="city" /> <result property="city" column="city" />
...@@ -45,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -45,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectWaterOrderVo"> <sql id="selectWaterOrderVo">
select id, order_num, user_id, user_name, user_phone, user_province, user_city, user_area, user_address, station_id, station_name, station_phone, station_province, station_city, station_area, station_address, order_state, pay_state, pay_type, pay_num, name, province, city, area, address, mobile, deliever_time, deliever_name, deliever_mobile, create_time, create_user, deliever_over, take_time, finish_time, remark, goods_val, order_type from water_order select id, order_num, user_id, user_name, user_phone, user_province, user_city, user_area, user_address, station_id, station_name, station_phone, station_province, station_city, station_area, station_address, order_state, complete_state, confirm_state, pay_state, pay_type, pay_num, cancel_result, user_address_id, name, province, city, area, address, mobile, deliever_time, deliever_name, deliever_mobile, create_time, create_user, deliever_over, take_time, finish_time, remark, goods_val, order_type from water_order
</sql> </sql>
<select id="selectWaterOrderList" parameterType="com.qianhe.system.vo.WaterOrderVo" resultMap="WaterOrderResult"> <select id="selectWaterOrderList" parameterType="com.qianhe.system.vo.WaterOrderVo" resultMap="WaterOrderResult">
...@@ -68,9 +72,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -68,9 +72,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="stationArea != null and stationArea != ''"> and station_area = #{stationArea}</if> <if test="stationArea != null and stationArea != ''"> and station_area = #{stationArea}</if>
<if test="stationAddress != null and stationAddress != ''"> and station_address = #{stationAddress}</if> <if test="stationAddress != null and stationAddress != ''"> and station_address = #{stationAddress}</if>
<if test="orderState != null "> and order_state = #{orderState}</if> <if test="orderState != null "> and order_state = #{orderState}</if>
<if test="completeState != null "> and complete_state = #{completeState}</if>
<if test="confirmState != null "> and confirm_state = #{confirmState}</if>
<if test="payState != null "> and pay_state = #{payState}</if> <if test="payState != null "> and pay_state = #{payState}</if>
<if test="payType != null "> and pay_type = #{payType}</if> <if test="payType != null "> and pay_type = #{payType}</if>
<if test="payNum != null and payNum != ''"> and pay_num = #{payNum}</if> <if test="payNum != null and payNum != ''"> and pay_num = #{payNum}</if>
<if test="cancelResult != null and cancelResult != ''"> and cancel_result = #{cancelResult}</if>
<if test="userAddressId != null"> and user_address_id = #{userAddressId}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if> <if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="province != null and province != ''"> and province = #{province}</if> <if test="province != null and province != ''"> and province = #{province}</if>
<if test="city != null and city != ''"> and city = #{city}</if> <if test="city != null and city != ''"> and city = #{city}</if>
...@@ -92,6 +100,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -92,6 +100,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by create_time DESC order by create_time DESC
</select> </select>
<select id="getWaterOrderListByStationId" parameterType="com.qianhe.system.vo.WaterOrderVo" resultMap="WaterOrderResult">
<include refid="selectWaterOrderVo"/>
<where>
del_flag = '0' and order_state != 1
<if test="stationId != null "> and station_id = #{stationId}</if>
<if test="orderState != null "> and order_state = #{orderState}</if>
</where>
order by create_time DESC
</select>
<select id="selectWaterOrderById" parameterType="Long" resultMap="WaterOrderResult"> <select id="selectWaterOrderById" parameterType="Long" resultMap="WaterOrderResult">
<include refid="selectWaterOrderVo"/> <include refid="selectWaterOrderVo"/>
where id = #{id} where id = #{id}
...@@ -113,6 +131,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -113,6 +131,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userAddress != null">user_address,</if> <if test="userAddress != null">user_address,</if>
<if test="stationId != null">station_id,station_name,station_phone,station_province,station_city,station_area,station_address,</if> <if test="stationId != null">station_id,station_name,station_phone,station_province,station_city,station_area,station_address,</if>
<if test="orderState != null">order_state,</if> <if test="orderState != null">order_state,</if>
<if test="completeState != null">complete_state,</if>
<if test="confirmState != null">confirm_state,</if>
<if test="payState != null">pay_state,</if> <if test="payState != null">pay_state,</if>
<if test="payType != null">pay_type,</if> <if test="payType != null">pay_type,</if>
<if test="payNum != null">pay_num,</if> <if test="payNum != null">pay_num,</if>
...@@ -148,6 +168,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -148,6 +168,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
(select station_address from water_station where id = #{stationId}), (select station_address from water_station where id = #{stationId}),
</if> </if>
<if test="orderState != null">#{orderState},</if> <if test="orderState != null">#{orderState},</if>
<if test="completeState != null">#{completeState},</if>
<if test="confirmState != null">#{confirmState},</if>
<if test="payState != null">#{payState},</if> <if test="payState != null">#{payState},</if>
<if test="payType != null">#{payType},</if> <if test="payType != null">#{payType},</if>
<if test="payNum != null">#{payNum},</if> <if test="payNum != null">#{payNum},</if>
...@@ -197,6 +219,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -197,6 +219,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
station_address = (select station_address from water_station where id = #{stationId}), station_address = (select station_address from water_station where id = #{stationId}),
</if> </if>
<if test="orderState != null">order_state = #{orderState},</if> <if test="orderState != null">order_state = #{orderState},</if>
<if test="completeState != null">complete_state = #{completeState},</if>
<if test="confirmState != null">confirm_state = #{confirmState},</if>
<if test="payState != null">pay_state = #{payState},</if> <if test="payState != null">pay_state = #{payState},</if>
<if test="payType != null">pay_type = #{payType},</if> <if test="payType != null">pay_type = #{payType},</if>
<if test="payNum != null">pay_num = #{payNum},</if> <if test="payNum != null">pay_num = #{payNum},</if>
...@@ -256,4 +280,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -256,4 +280,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, #{item.remark}, #{item.createTime}, (select nick_name from water_user where id = #{item.createUser})) , #{item.remark}, #{item.createTime}, (select nick_name from water_user where id = #{item.createUser}))
</foreach> </foreach>
</insert> </insert>
<select id="getOrderNumByStation" parameterType="com.qianhe.system.vo.WaterOrderVo" resultType="Map">
SELECT
COUNT(id) as todayOrderNum,
(SELECT COUNT(id) as totalOrderNum FROM `water_order` WHERE del_flag = '0' and station_id = #{stationId}) as totalOrderNum
FROM `water_order`
WHERE del_flag = '0' and station_id = #{stationId} and order_state != 1 and DATE_FORMAT(create_time, '%Y-%m-%d') = DATE_FORMAT(#{createTime}, '%Y-%m-%d');
</select>
</mapper> </mapper>
...@@ -40,6 +40,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -40,6 +40,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</select> </select>
<select id="selectWaterStationUserByPhone" parameterType="Long" resultMap="WaterStationUserResult">
<include refid="selectWaterStationUserVo"/>
where phone = #{phone}
</select>
<insert id="insertWaterStationUser" parameterType="WaterStationUser" useGeneratedKeys="true" keyProperty="id"> <insert id="insertWaterStationUser" parameterType="WaterStationUser" useGeneratedKeys="true" keyProperty="id">
insert into water_station_user insert into water_station_user
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
......
...@@ -42,7 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -42,7 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectUserByOpenId" parameterType="String" resultMap="WaterUserResult"> <select id="selectUserByOpenId" parameterType="String" resultMap="WaterUserResult">
<include refid="selectWaterUserVo"/> <include refid="selectWaterUserVo"/>
where open_id = #{openId} where open_id = #{openId} and status != '1'
</select> </select>
<insert id="insertWaterUser" parameterType="WaterUser" useGeneratedKeys="true" keyProperty="id"> <insert id="insertWaterUser" parameterType="WaterUser" useGeneratedKeys="true" keyProperty="id">
......
...@@ -112,8 +112,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter ...@@ -112,8 +112,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.authorizeRequests() .authorizeRequests()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
.antMatchers("/login", "/register", "/captchaImage").permitAll() .antMatchers("/login", "/register", "/captchaImage").permitAll()
//放行微信小程序相关接口 //放行订水小程序登录相关接口
.antMatchers("/wx/getWxLoginInfo/**", "/wx/login/**", "/wx/getPhoneNumber/**", "/wx/getUserInfo","/wx/updateUser").permitAll() .antMatchers("/wx/getWxLoginInfo/**", "/wx/login/**", "/wx/getPhoneNumber/**", "/wx/getUserInfo","/wx/updateUser").permitAll()
//放行送水小程序登录相关接口
.antMatchers("/ssWx/getWxLoginInfo/**", "/ssWx/login/**", "/ssWx/getPhoneNumber/**", "/ssWx/getUserInfo","/ssWx/updateUser").permitAll()
//通用接口放行 //通用接口放行
.antMatchers("/common/**").permitAll() .antMatchers("/common/**").permitAll()
//测试放行所有接口 //测试放行所有接口
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment