Commit 13a5cccd by xuwenhao

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

parent aef88495
......@@ -23,7 +23,9 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 商品Controller
......@@ -194,7 +196,21 @@ public class WaterGoodsController extends BaseController
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
//转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);
// }
}
}
TableDataInfo tableDataInfo = getDataTable(waterOrderVoList);
......@@ -111,8 +106,29 @@ public class WaterOrderController extends BaseController
public void export(HttpServletResponse response, WaterOrderVo 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
public AjaxResult updateOrderState(@RequestBody WaterOrderVo 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 {
* @return
*/
@GetMapping("/login")
public AjaxResult login(@RequestParam("code") String code){
AjaxResult ajaxResult = AjaxResult.success();
......
......@@ -48,6 +48,9 @@ public class WaterGoodsCart {
/** 是否选中(1是,0否) */
private String isSelect;
/** 上架状态 */
private String status;
/** 创建人 */
private String createUser;
......
......@@ -28,6 +28,9 @@ public class WaterGoodsType
/** 名称 */
private String typeName;
/** 排序 */
private Integer sort;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
......
......@@ -87,6 +87,12 @@ public class WaterOrder
@Excel(name = "订单状态(1待付款2待接单3进行中4已完成5已取消6已退款)")
private Integer orderState;
/** 送水工完成状态(0未完成,1已完成,2已退款) */
private Integer completeState;
/** 用户确认状态(0未确认,1确认收货,2确认退款) */
private Integer confirmState;
/** 付款状态(0未付款1已付款) */
@Excel(name = "付款状态(0未付款1已付款)")
private Integer payState;
......@@ -99,6 +105,9 @@ public class WaterOrder
@Excel(name = "银行返回支付成功code")
private String payNum;
/** 取消原因 */
private String cancelResult;
/** 用户地址id */
private Long userAddressId;
......
......@@ -24,43 +24,36 @@ public class WaterOrderGoods
private Long id;
/** 订单id */
@Excel(name = "订单id")
private Long orderId;
/** 订单编号 */
@Excel(name = "订单编号")
private String orderNum;
/** 商品分类id */
@Excel(name = "商品分类id")
private Long goodsTypeId;
/** 商品分类 */
@Excel(name = "商品分类")
private String goodsType;
/** 规格详情 */
@Excel(name = "规格详情")
private String goodsSpe;
/** 商品id */
@Excel(name = "商品id")
private Long goodsId;
/** 商品名称 */
@Excel(name = "品名称")
@Excel(name = "品名称")
private String goodsTitle;
/** 商品单价 */
@Excel(name = "售价")
private BigDecimal goodsPrice;
/** 商品数量 */
@Excel(name = "商品数量")
@Excel(name = "数量")
private BigDecimal goodsNum;
/** 商品单价 */
@Excel(name = "商品单价")
private BigDecimal goodsPrice;
/** 商品总价 */
@Excel(name = "商品总价")
@Excel(name = "金额")
private BigDecimal goodsTotal;
/** 备注 */
......@@ -68,10 +61,8 @@ public class WaterOrderGoods
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date createTime;
/** 创建人 */
@Excel(name = "创建人")
private String createUser;
}
......@@ -36,11 +36,9 @@ public class WaterUser
private Long phoneNum;
/** 站点名称 */
@Excel(name = "站点名称")
private String stationName;
/** 用户类型 */
@Excel(name = "用户类型")
private String userType;
/** 性别(1男0女) */
......
......@@ -35,6 +35,13 @@ public interface WaterGoodsCartMapper {
int updateWaterGoodsCart(WaterGoodsCart waterGoodsCart);
/**
* 修改购物车商品上架状态
* @param waterGoodsCart
* @return
*/
int updateGoodsStatus(WaterGoodsCart waterGoodsCart);
/**
* 删除购物车商品
* @param id
* @return
......
......@@ -5,6 +5,7 @@ import com.qianhe.system.domain.WaterOrderGoods;
import com.qianhe.system.vo.WaterOrderVo;
import java.util.List;
import java.util.Map;
/**
* 订单Mapper接口
......@@ -92,4 +93,18 @@ public interface WaterOrderMapper
*/
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;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qianhe.system.domain.WaterStationUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -60,4 +61,11 @@ public interface WaterStationUserMapper extends BaseMapper<WaterStationUser>
* @return 结果
*/
public int deleteWaterStationUserByIds(Long[] ids);
/**
* 根据手机号查询站点用户
* @param phone
* @return
*/
WaterStationUser selectWaterStationUserByPhone(@Param("phone") Long phone);
}
package com.qianhe.system.service;
import com.qianhe.common.core.domain.AjaxResult;
import com.qianhe.system.domain.WaterOrder;
import com.qianhe.system.vo.WaterOrderVo;
import java.util.List;
import java.util.Map;
/**
* 订单Service接口
......@@ -67,4 +69,33 @@ public interface IWaterOrderService
* @return
*/
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>
* @return 结果
*/
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;
import com.qianhe.common.core.domain.model.WxLoginBody;
public interface IWxLoginService {
/**
* 订水端登录
* @param wxLoginBody
* @return
*/
MpLoginUser login(WxLoginBody wxLoginBody);
/**
* 送水端登录
* @param wxLoginBody
* @return
*/
MpLoginUser ssLogin(WxLoginBody wxLoginBody);
}
......@@ -35,6 +35,8 @@ public class WaterGoodsServiceImpl implements IWaterGoodsService
private WaterStationMapper waterStationMapper;
@Autowired
private WaterGoodsTypeMapper waterGoodsTypeMapper;
@Autowired
private WaterGoodsCartMapper waterGoodsCartMapper;
/**
* 查询商品
......@@ -186,6 +188,16 @@ public class WaterGoodsServiceImpl implements IWaterGoodsService
insertGoodsDetailsImgs(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);
}
......
package com.qianhe.system.service.impl;
import com.qianhe.common.exception.ServiceException;
import com.qianhe.common.utils.DateUtils;
import com.qianhe.common.utils.StringUtils;
import com.qianhe.system.domain.WaterGoods;
......@@ -18,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
import java.util.Random;
/**
......@@ -171,6 +173,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
* @return 结果
*/
@Override
@Transactional
public int deleteWaterOrderByIds(Long[] ids)
{
//批量删除订单商品
......@@ -185,6 +188,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
* @return 结果
*/
@Override
@Transactional
public int deleteWaterOrderById(Long id)
{
return waterOrderMapper.deleteWaterOrderById(id);
......@@ -196,7 +200,58 @@ public class WaterOrderServiceImpl implements IWaterOrderService
* @return
*/
@Override
@Transactional
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);
}
}
......@@ -95,4 +95,14 @@ public class WaterStationUserServiceImpl extends ServiceImpl<WaterStationUserMap
{
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 {
//不存在,新增用户
WaterUser waterUser = new WaterUser();
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.setCreateTime(DateUtils.getNowDate());
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 {
}
/**
* 解密用户手机号 (已废弃)
*
* @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;
}
// /**
// * 解密用户手机号 (已废弃)
// *
// * @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;
// }
}
......@@ -14,154 +14,136 @@ public class WaterOrderVo {
private Long id;
/** 订单编号(生成规则当前年月日+当天下单0001开始+随机生成4位英文字母) */
@Excel(name = "订单编号(生成规则当前年月日+当天下单0001开始+随机生成4位英文字母)")
private String orderNum;
/** 用户id */
@Excel(name = "用户id")
private Long userId;
/** 用户名字 */
@Excel(name = "用户名字")
@Excel(name = "下单用户", needMerge = true)
private String userName;
/** 订单编号(生成规则当前年月日+当天下单0001开始+随机生成4位英文字母) */
@Excel(name = "订单编号", needMerge = true)
private String orderNum;
/** 用户手机号 */
@Excel(name = "用户手机号")
private Long userPhone;
/** 用户省 */
@Excel(name = "用户省")
private String userProvince;
/** 用户城市 */
@Excel(name = "用户城市")
private String userCity;
/** 用户区 */
@Excel(name = "用户区")
private String userArea;
/** 用户详细地址 */
@Excel(name = "用户详细地址")
private String userAddress;
/** 站点id */
@Excel(name = "站点id")
private Long stationId;
/** 站点名字 */
@Excel(name = "站点名字")
@Excel(name = "站点名字", needMerge = true)
private String stationName;
/** 站点手机号 */
@Excel(name = "站点手机号")
private Long stationPhone;
/** 站点省份 */
@Excel(name = "站点省份")
private String stationProvince;
/** 站点城市 */
@Excel(name = "站点城市")
private String stationCity;
/** 站点市区 */
@Excel(name = "站点市区")
private String stationArea;
/** 站点详细地址 */
@Excel(name = "站点详细地址")
private String stationAddress;
/** 支付方式(1银行2水票) */
@Excel(name = "支付方式", readConverterExp = "1=银行支付,2=水票支付", needMerge = true)
private Integer payType;
/** 订单状态(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;
/** 送水工完成状态(0未完成,1已完成,2已退款) */
private Integer completeState;
/** 用户确认状态(0未确认,1确认收货,2确认退款) */
private Integer confirmState;
/** 付款状态(0未付款1已付款) */
@Excel(name = "付款状态(0未付款1已付款)")
private Integer payState;
/** 支付方式(1银行2水票) */
@Excel(name = "支付方式(1银行2水票)")
private Integer payType;
/** 银行返回支付成功code */
@Excel(name = "银行返回支付成功code")
private String payNum;
/** 取消原因 */
private String cancelResult;
/** 用户地址id */
private Long userAddressId;
/** 收货人名字 */
@Excel(name = "收货人名字")
private String name;
/** 省 */
@Excel(name = "省")
private String province;
/** 市 */
@Excel(name = "市")
private String city;
/** 区 */
@Excel(name = "区")
private String area;
/** 详细地址 */
@Excel(name = "详细地址")
private String address;
/** 收货人手机号 */
@Excel(name = "收货人手机号")
private Long mobile;
/** 送货时间 */
@Excel(name = "送货时间")
private String delieverTime;
/** 送水工名字 */
@Excel(name = "送水工名字")
private String delieverName;
/** 送水工电话 */
@Excel(name = "送水工电话")
private String delieverMobile;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 创建人 */
@Excel(name = "创建人")
private String createUser;
/** 送达时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "送达时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date delieverOver;
/** 收货时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "收货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date takeTime;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/** 备注 */
@Excel(name = "备注")
@Excel(name = "备注", needMerge = true)
private String remark;
/** 商品总价 */
@Excel(name = "商品总价")
private BigDecimal goodsVal;
/** 订单类型(1普通订单2退款订单) */
@Excel(name = "订单类型", readConverterExp = "1=普通订单2退款订单")
private Integer orderType;
/** 开始时间 */
......@@ -174,5 +156,6 @@ public class WaterOrderVo {
private WaterOrderGoods waterOrderGoods;
/** 商品 */
@Excel(name = "商品")
private List<WaterOrderGoods> waterOrderGoodsList;
}
......@@ -130,7 +130,14 @@ xss:
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
# 订水端小程序
wx:
appId: wxcabea5c944c4327c
appSecret: bd486fd54bd1ea5e9b198911d765ce6a
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"
<result property="goodsNum" column="goods_num" />
<result property="goodsTotal" column="goods_total" />
<result property="isSelect" column="is_select" />
<result property="status" column="status" />
<result property="createUser" column="create_user" />
<result property="createTime" column="create_time" />
</resultMap>
<sql id="selectWaterGoodsCartVo">
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
</sql>
......@@ -58,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="goodsNum != null">goods_num,</if>
<if test="goodsTotal != null">goods_total,</if>
<if test="isSelect != null">is_select,</if>
<if test="status != null">status,</if>
<if test="createUser != null">create_user,</if>
<if test="createTime != null">create_time,</if>
</trim>
......@@ -73,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="goodsNum != null">#{goodsNum},</if>
<if test="goodsTotal != null">#{goodsTotal},</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="createTime != null">#{createTime},</if>
</trim>
......@@ -92,12 +95,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="goodsNum != null">goods_num = #{goodsNum},</if>
<if test="goodsTotal != null">goods_total = #{goodsTotal},</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="createTime != null">create_time = #{createTime},</if>
</trim>
where id = #{id}
</update>
<update id="updateGoodsStatus" parameterType="WaterGoodsCart">
update water_goods_cart set status = #{status} where goods_id = #{goodsId}
</update>
<update id="deleteWaterGoodsCartById" parameterType="Long">
update water_goods_cart set del_flag = '1' where id = #{id}
</update>
......
......@@ -7,11 +7,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="WaterGoodsType" id="WaterGoodsTypeResult">
<result property="id" column="id" />
<result property="typeName" column="type_name" />
<result property="sort" column="sort" />
<result property="createTime" column="create_time" />
</resultMap>
<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>
<select id="selectWaterGoodsTypeList" parameterType="WaterGoodsType" resultMap="WaterGoodsTypeResult">
......@@ -20,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
del_flag = '0'
<if test="typeName != null and typeName != ''"> and type_name like concat('%', #{typeName}, '%')</if>
</where>
order by create_time DESC
order by sort
</select>
<select id="selectWaterGoodsTypeById" parameterType="Long" resultMap="WaterGoodsTypeResult">
......@@ -32,10 +33,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
insert into water_goods_type
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="typeName != null">type_name,</if>
<if test="sort != null">sort,</if>
<if test="createTime != null">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="typeName != null">#{typeName},</if>
<if test="sort != null">#{sort},</if>
<if test="createTime != null">#{createTime},</if>
</trim>
</insert>
......@@ -44,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update water_goods_type
<trim prefix="SET" suffixOverrides=",">
<if test="typeName != null">type_name = #{typeName},</if>
<if test="sort != null">sort = #{sort},</if>
<if test="createTime != null">create_time = #{createTime},</if>
</trim>
where id = #{id}
......
......@@ -22,9 +22,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="stationArea" column="station_area" />
<result property="stationAddress" column="station_address" />
<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="payType" column="pay_type" />
<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="province" column="province" />
<result property="city" column="city" />
......@@ -45,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<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>
<select id="selectWaterOrderList" parameterType="com.qianhe.system.vo.WaterOrderVo" resultMap="WaterOrderResult">
......@@ -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="stationAddress != null and stationAddress != ''"> and station_address = #{stationAddress}</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="payType != null "> and pay_type = #{payType}</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="province != null and province != ''"> and province = #{province}</if>
<if test="city != null and city != ''"> and city = #{city}</if>
......@@ -92,6 +100,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by create_time DESC
</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">
<include refid="selectWaterOrderVo"/>
where id = #{id}
......@@ -113,6 +131,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<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="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="payType != null">pay_type,</if>
<if test="payNum != null">pay_num,</if>
......@@ -148,6 +168,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
(select station_address from water_station where id = #{stationId}),
</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="payType != null">#{payType},</if>
<if test="payNum != null">#{payNum},</if>
......@@ -197,6 +219,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
station_address = (select station_address from water_station where id = #{stationId}),
</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="payType != null">pay_type = #{payType},</if>
<if test="payNum != null">pay_num = #{payNum},</if>
......@@ -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}))
</foreach>
</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>
......@@ -40,6 +40,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</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 into water_station_user
<trim prefix="(" suffix=")" suffixOverrides=",">
......
......@@ -42,7 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectUserByOpenId" parameterType="String" resultMap="WaterUserResult">
<include refid="selectWaterUserVo"/>
where open_id = #{openId}
where open_id = #{openId} and status != '1'
</select>
<insert id="insertWaterUser" parameterType="WaterUser" useGeneratedKeys="true" keyProperty="id">
......
......@@ -112,8 +112,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.authorizeRequests()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
.antMatchers("/login", "/register", "/captchaImage").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()
//测试放行所有接口
......
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