From aa8f41d3b4fcc7aae0bd50fdea92b126f22485df Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期五, 05 五月 2023 18:34:54 +0800 Subject: [PATCH] 商户端主流程 --- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java | 14 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 15 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java | 5 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml | 42 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerMemberNoClearOrderDto.java | 21 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java | 7 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 28 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerGoodsController.java | 1 ruoyi-modules/ruoyi-order/src/main/resources/mapper/goods/GoodsMapper.xml | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java | 34 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUserInfoVo.java | 3 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml | 14 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java | 16 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsDto.java | 25 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsListDto.java | 22 ruoyi-modules/ruoyi-member/src/main/resources/logback.xml | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java | 10 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/util/HttpUtils.java | 337 ++++++++++++++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java | 5 ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java | 42 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java | 27 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java | 40 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/ActivityController.java | 1 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCashMemberPageVo.java | 26 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerGoodsPageDto.java | 3 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCashMemberPageDto.java | 20 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 112 ++++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java | 40 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsVo.java | 25 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 191 ++++++++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerConsumerGoodsDto.java | 23 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java | 20 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java | 4 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/AppUserAuthorizeDto.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerConsumerController.java | 52 ++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java | 44 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java | 16 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java | 45 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java | 4 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java | 4 44 files changed, 1,331 insertions(+), 38 deletions(-) diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java index 6de0ec3..71d8f42 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java @@ -21,6 +21,8 @@ import io.jsonwebtoken.Claims; import reactor.core.publisher.Mono; +import javax.annotation.Resource; + /** * 网关鉴权 * @@ -35,7 +37,7 @@ @Autowired private IgnoreWhiteProperties ignoreWhite; - @Autowired + @Resource private RedisService redisService; @@ -46,12 +48,14 @@ ServerHttpRequest.Builder mutate = request.mutate(); String url = request.getURI().getPath(); + log.info("url"+url); // 跳过不需要验证的路径 if (StringUtils.matches(url, ignoreWhite.getWhites())) { return chain.filter(exchange); } String token = getToken(request); + log.info("token"+token); if (StringUtils.isEmpty(token)) { return unauthorizedResponse(exchange, "令牌不能为空"); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java index a08716e..17a4f67 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java @@ -3,8 +3,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.member.domain.dto.MerCashMemberPageDto; import com.ruoyi.member.domain.dto.MerMemberPageDto; import com.ruoyi.member.domain.vo.AppUserInfoVo; +import com.ruoyi.member.domain.vo.MerCashMemberPageVo; import com.ruoyi.member.domain.vo.MerMemberInfoVo; import com.ruoyi.member.domain.vo.MerMemberPageVo; import com.ruoyi.member.service.member.MemberService; @@ -34,6 +36,18 @@ @Autowired private MemberService memberService; + + @RequestMapping(value = "/pageMerCashMember", method = RequestMethod.POST) + @ApiOperation(value = "分页获取收银搜索会员列表") + public R<Page<MerCashMemberPageVo>> pageMerCashMember(@RequestBody MerCashMemberPageDto merCashMemberPageDto) { + Long userId = SecurityUtils.getUserId(); + Page<MerCashMemberPageVo> page = new Page<>(); + page.setSize(merCashMemberPageDto.getPageSize()); + page.setCurrent(merCashMemberPageDto.getPageNum()); + List<MerCashMemberPageVo> merCashMemberPageVos = memberService.pageMerCashMember(page,merCashMemberPageDto); + return R.ok(page.setRecords(merCashMemberPageVos)); + } + @RequestMapping(value = "/pageMerMember", method = RequestMethod.POST) @ApiOperation(value = "分页获取商户绑定会员列表") public R<Page<MerMemberPageVo>> pageMerMember(@RequestBody MerMemberPageDto merMemberPageDto) { @@ -45,6 +59,12 @@ return R.ok(page.setRecords(merMemberPageVoList)); } + + + /** + * 未完成 + * @return + */ @RequestMapping(value = "/getMerMemberInfo", method = RequestMethod.POST) @ApiOperation(value = "获取会员信息") public R<MerMemberInfoVo> getMerMemberInfo() { diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java index 2065696..3626ab8 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java @@ -32,7 +32,7 @@ * @author jqs34 * @date: 2023/4/30 12:49 */ - @InnerAuth + @GetMapping("/getMember") public R<Member> getMember(@RequestBody Long userId) { @@ -63,6 +63,8 @@ * @date 2023/5/3 1:45 * @version 1.0 */ + + @PostMapping("/listVoUserCouponByUserId") public R<List<AppUserCouponVo>> listVoUserCouponByUserId(@RequestBody Long userId){ List<AppUserCouponVo> appUserCouponVoList = userCouponService.listVoUserCouponByUserId(userId); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/AppUserAuthorizeDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/AppUserAuthorizeDto.java index fe541b5..87c2364 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/AppUserAuthorizeDto.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/AppUserAuthorizeDto.java @@ -14,6 +14,9 @@ @Data public class AppUserAuthorizeDto extends AppBaseDto { + @ApiModelProperty(value = "手机code") + private String mobileCode; + @ApiModelProperty(value = "手机iv") private String phoneIv; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCashMemberPageDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCashMemberPageDto.java new file mode 100644 index 0000000..78b575a --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCashMemberPageDto.java @@ -0,0 +1,20 @@ +package com.ruoyi.member.domain.dto; + +import com.ruoyi.system.api.domain.dto.MerPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MerCashMemberPageDto + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerCashMemberPageDto extends MerPageDto { + + @ApiModelProperty(value = "关键词") + private String keyword; + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUserInfoVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUserInfoVo.java index f1a42e2..36a441b 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUserInfoVo.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUserInfoVo.java @@ -20,6 +20,9 @@ @ApiModelProperty(value = "用户id") private Long userId; + @ApiModelProperty(value = "关联id") + private Long relationShopId; + @ApiModelProperty("会员编号") private String memberNo; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCashMemberPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCashMemberPageVo.java new file mode 100644 index 0000000..e093231 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCashMemberPageVo.java @@ -0,0 +1,26 @@ +package com.ruoyi.member.domain.vo; + +import com.ruoyi.system.api.domain.dto.MerPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MerCashMemberPageDto + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerCashMemberPageVo extends MerPageDto { + + @ApiModelProperty(value = "用户id") + private Long userId; + + @ApiModelProperty(value = "用户名") + private String nickName; + + @ApiModelProperty(value = "手机号") + private String mobile; + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java index 6a6a956..e43dc66 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java @@ -1,6 +1,10 @@ package com.ruoyi.member.domain.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; /** * @author jqs34 @@ -11,4 +15,40 @@ */ @Data public class MerMemberInfoVo { + + @ApiModelProperty(value = "用户id") + private Long userId; + + @ApiModelProperty(name = "用户名称") + private String nickName; + + @ApiModelProperty(name = "手机号码") + private String phonenumber; + + @ApiModelProperty("用户头像") + private String avatar; + + @ApiModelProperty(value = "用户标签") + private String userTags; + + @ApiModelProperty(value = "次数剩余") + private Integer surpNumber; + + @ApiModelProperty(value = "消费次数") + private Integer userNumber; + + @ApiModelProperty(value = "消费总额") + private BigDecimal payMoney; + + @ApiModelProperty(value = "待支付金额") + private BigDecimal unpaidMoney; + + @ApiModelProperty(value = "最近跟进任务") + private String lastTaskContent; + + @ApiModelProperty(value = "最近跟进任务时间") + private Date lastTaskTime; + + @ApiModelProperty(value = "下次跟进任务时间") + private Date nextTaskTime; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java index e9a7055..d770f30 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java @@ -2,7 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.member.domain.dto.MerCashMemberPageDto; import com.ruoyi.member.domain.dto.MerMemberPageDto; +import com.ruoyi.member.domain.vo.MerCashMemberPageVo; import com.ruoyi.member.domain.vo.MerMemberPageVo; import com.ruoyi.system.api.domain.poji.member.Member; import org.apache.ibatis.annotations.Param; @@ -39,4 +41,12 @@ * @return */ List<MerMemberPageVo> pageMerMember(Page page,@Param("param")MerMemberPageDto merMemberPageDto); + + /** + * 分页获取收银用户列表 + * @param page + * @param merCashMemberPageDto + * @return + */ + List<MerCashMemberPageVo> pageMerCashMember(Page page, MerCashMemberPageDto merCashMemberPageDto); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java index 2190d35..5ece8ef 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java @@ -3,19 +3,20 @@ import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.member.domain.dto.AppUserAuthorizeDto; +import com.ruoyi.member.domain.dto.MerCashMemberPageDto; import com.ruoyi.member.domain.dto.MerMemberPageDto; -import com.ruoyi.member.domain.vo.AppUserAuthorizeVo; -import com.ruoyi.member.domain.vo.AppUserInfoVo; -import com.ruoyi.member.domain.vo.MerMemberInfoVo; -import com.ruoyi.member.domain.vo.MerMemberPageVo; +import com.ruoyi.member.domain.vo.*; import com.ruoyi.member.mapper.member.MemberMapper; import com.ruoyi.member.service.member.MemberService; +import com.ruoyi.member.util.HttpUtils; import com.ruoyi.system.api.RemoteOrderService; import com.ruoyi.system.api.RemoteShopService; import com.ruoyi.system.api.RemoteUserService; @@ -28,14 +29,20 @@ import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; import com.ruoyi.system.api.model.AppMiniLoginDto; import com.ruoyi.system.api.model.AppMiniLoginVo; -import org.apache.commons.lang3.StringUtils; +import lombok.extern.log4j.Log4j; +import lombok.extern.log4j.Log4j2; +import lombok.val; +import com.ruoyi.common.core.utils.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.util.EntityUtils; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.util.*; +import java.util.concurrent.TimeUnit; /** * <p> @@ -46,7 +53,15 @@ * @since 2023-04-25 */ @Service +@Log4j2 public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> implements MemberService { + + private static final String ACCESS_TOKEN_HOST = "https://api.weixin.qq.com/cgi-bin/token"; + + private static final String WX_APPID = "wxb7f0ea286fc4e535"; + + private static final String WX_SECRET = "852a2512a6ab559cafc68bae5d4160ac"; + @Resource private RemoteUserService sysUserService; @@ -115,6 +130,7 @@ String password = "hongruitang"; sysUser.setPassword(SecurityUtils.encryptPassword(password)); sysUser = sysUserService.registerUser(sysUser).getData(); + log.info("sysUser1"+sysUser.toString()); member = new Member(); member.setUserId(sysUser.getUserId()); member.setDelFlag(0); @@ -123,8 +139,13 @@ member.setMiniOpenid(openid); member.setCreateTime(new Date()); this.save(member); + }else{ - sysUser = sysUserService.getSysUser(member.getUserId()).getData(); + log.info("member2"+member.toString()); + R<SysUser> sysUser1 = sysUserService.getSysUser(member.getUserId()); + log.info("sysUser1"+ sysUser1.getCode() + " : " + sysUser1.getMsg()); + sysUser = sysUser1.getData(); + log.info("sysUser"+sysUser.toString()); } appMiniLoginVo.setMiniOpenid(openid); appMiniLoginVo.setWxUnionid(unionid); @@ -132,8 +153,10 @@ appMiniLoginVo.setSessionKey(sessionKey); stringRedisTemplate.opsForValue().set(SecurityConstant.SESSION_KEY+openid,sessionKey); }else{ + log.info("null"); return null; } + log.info("appMiniLoginVo"+appMiniLoginVo.toString()); return appMiniLoginVo; } @@ -154,7 +177,7 @@ String mobile = null; try { //解密微信加密用户信息和手机号 - WxMaPhoneNumberInfo wxPhoneInfo; + /*WxMaPhoneNumberInfo wxPhoneInfo; if(StringUtils.isNotBlank(appUserAuthorizeDto.getPhoneEncryptedData())&&StringUtils.isNotBlank(appUserAuthorizeDto.getPhoneIv())){ wxPhoneInfo = wxMaService.getUserService().getPhoneNoInfo(sessionkey, appUserAuthorizeDto.getPhoneEncryptedData(), appUserAuthorizeDto.getPhoneIv()); }else{ @@ -163,7 +186,31 @@ if(StringUtils.isBlank(wxPhoneInfo.getPhoneNumber())){ throw new ServiceException(AppErrorConstant.AUTHORIZE_FAILED); } - mobile = wxPhoneInfo.getPhoneNumber(); + mobile = wxPhoneInfo.getPhoneNumber();*/ + String accessToken = stringRedisTemplate.opsForValue().get("wx_access_token"); + if (StringUtils.isBlank(accessToken)) { + String responseAccessToken = getAccessTokenByWX(); + JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken); + accessToken = jsonAccessToken.getString("access_token"); + String errmsg = jsonAccessToken.getString("errmsg"); + Long expiresIn = jsonAccessToken.getLong("expires_in"); + if (StringUtils.isBlank(accessToken)) { + throw new ServiceException(errmsg); + } else { + expiresIn = expiresIn - 100; + stringRedisTemplate.opsForValue().set("wx_access_token", accessToken, expiresIn.intValue(), TimeUnit.SECONDS); + } + } + String responseUserPhoneNumber = getMobileByWX(accessToken, appUserAuthorizeDto.getMobileCode()); + JSONObject jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber); + String errcode = jsonUserPhoneNumber.getString("errcode"); + String errmsg = jsonUserPhoneNumber.getString("errmsg"); + if (!errcode.equals("0")) { + throw new ServiceException(errmsg); + } + String phoneInfo = jsonUserPhoneNumber.getString("phone_info"); + JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo); + mobile = jsonUserPhoneInfo.getString("purePhoneNumber"); } catch (Exception e) { e.printStackTrace(); } @@ -182,6 +229,28 @@ return appUserAuthorizeVo; } + public static String getAccessTokenByWX() throws Exception { + String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential"; + Map<String, String> headers = new HashMap<>(8); + HttpResponse response = HttpUtils.doGet(host, "", "GET", headers, null); + return EntityUtils.toString(response.getEntity()); + } + + public static String getMobileByWX(String accessToken, String code) throws Exception { + String method = "POST"; + Map<String, String> headers = new HashMap<>(16); + headers.put("Content-Type", "application/json"); + headers.put("Accept", "application/json"); + Map<String, String> querys = new HashMap<>(16); + Map<String, String> bodys = new HashMap<>(16); + querys.put("access_token", accessToken ); + bodys.put("code", code); + String body = JSONObject.toJSONString(bodys); + String host = "https://api.weixin.qq.com/wxa/business/getuserphonenumber"; + HttpResponse response = HttpUtils.doPost(host, "", "POST", headers, querys, body); + return EntityUtils.toString(response.getEntity()); + } + /** * 获取用户信息 * @param userId @@ -193,6 +262,7 @@ SysUser sysUser = sysUserService.getSysUser(userId).getData(); Member member = this.getByUserId(userId); appUserInfoVo.setUserId(userId); + appUserInfoVo.setRelationShopId(member.getRelationShopId()); appUserInfoVo.setMemberNo(member.getMemberNo()); appUserInfoVo.setNickName(sysUser.getNickName()); appUserInfoVo.setPhonenumber(sysUser.getPhonenumber()); @@ -267,7 +337,27 @@ @Override public MerMemberInfoVo getMerMemberInfo(Long userId){ MerMemberInfoVo merMemberInfoVo = new MerMemberInfoVo(); + SysUser sysUser = sysUserService.getSysUser(userId).getData(); + Member member = this.getByUserId(userId); + merMemberInfoVo.setUserId(userId); + merMemberInfoVo.setNickName(sysUser.getNickName()); + merMemberInfoVo.setPhonenumber(sysUser.getPhonenumber()); + merMemberInfoVo.setAvatar(sysUser.getAvatar()); + //未完成 + return merMemberInfoVo; } + /** + * 分页获取收银用户列表 + * @param page + * @param merCashMemberPageDto + * @return + */ + @Override + public List<MerCashMemberPageVo> pageMerCashMember(Page page, MerCashMemberPageDto merCashMemberPageDto){ + + List<MerCashMemberPageVo> merCashMemberPageVos = memberMapper.pageMerCashMember(page,merCashMemberPageDto); + return merCashMemberPageVos; + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java index 64e3dd2..34c9290 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java @@ -1,11 +1,9 @@ package com.ruoyi.member.service.member; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.member.domain.dto.MerCashMemberPageDto; import com.ruoyi.member.domain.dto.MerMemberPageDto; -import com.ruoyi.member.domain.vo.AppUserAuthorizeVo; -import com.ruoyi.member.domain.vo.AppUserInfoVo; -import com.ruoyi.member.domain.vo.MerMemberInfoVo; -import com.ruoyi.member.domain.vo.MerMemberPageVo; +import com.ruoyi.member.domain.vo.*; import com.ruoyi.system.api.domain.dto.AppEditUserDto; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.model.AppMiniLoginDto; @@ -74,4 +72,12 @@ * @version 1.0 */ MerMemberInfoVo getMerMemberInfo(Long userId); + + /** + * 分页获取收银用户列表 + * @param page + * @param merCashMemberPageDto + * @return + */ + List<MerCashMemberPageVo> pageMerCashMember(Page page, MerCashMemberPageDto merCashMemberPageDto); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/util/HttpUtils.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/util/HttpUtils.java new file mode 100644 index 0000000..4ad5625 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/util/HttpUtils.java @@ -0,0 +1,337 @@ +package com.ruoyi.member.util; + +import com.ruoyi.common.core.utils.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @ClassName HttpUtils + * @Description TODO + * @Author zhanglin + * @Date 2020/2/11 10:30 + * @Version 1.0 + **/ +public class HttpUtils { + + public static void main(String[] args) { + BigDecimal payMoney = BigDecimal.valueOf(0.73); + System.out.println(BigDecimal.ZERO.compareTo(payMoney)); + } + + + /** + * get + * + * @param host + * @return + * @throws Exception + */ + public static HttpResponse doGet(String host)throws Exception { + return doGet(host, "", "GET", null, null); + } + + /** + * get + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doGet(String host, String path, String method, Map<String, String> headers, Map<String, String> querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + if(null != headers) { + for (Map.Entry<String, String> e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + } + + return httpClient.execute(request); + } + + /** + * post form + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param bodys + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map<String, String> headers, + Map<String, String> querys, + Map<String, String> bodys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + + for (Map.Entry<String, String> e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (bodys != null) { + List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>(); + + for (String key : bodys.keySet()) { + nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); + } + UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8"); + formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); + request.setEntity(formEntity); + } + + return httpClient.execute(request); + } + + /** + * Post String + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map<String, String> headers, + Map<String, String> querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry<String, String> e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Post stream + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map<String, String> headers, + Map<String, String> querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry<String, String> e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Put String + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map<String, String> headers, + Map<String, String> querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry<String, String> e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Put stream + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map<String, String> headers, + Map<String, String> querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry<String, String> e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Delete + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doDelete(String host, String path, String method, + Map<String, String> headers, + Map<String, String> querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); + for (Map.Entry<String, String> e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException { + StringBuilder sbUrl = new StringBuilder(); + sbUrl.append(host); + if (!StringUtils.isBlank(path)) { + sbUrl.append(path); + } + if (null != querys) { + StringBuilder sbQuery = new StringBuilder(); + for (Map.Entry<String, String> query : querys.entrySet()) { + if (0 < sbQuery.length()) { + sbQuery.append("&"); + } + if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { + sbQuery.append(query.getValue()); + } + if (!StringUtils.isBlank(query.getKey())) { + sbQuery.append(query.getKey()); + if (!StringUtils.isBlank(query.getValue())) { + sbQuery.append("="); + sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8")); + } + } + } + if (0 < sbQuery.length()) { + sbUrl.append("?").append(sbQuery); + } + } + + return sbUrl.toString(); + } + + private static HttpClient wrapClient(String host) { + HttpClient httpClient = new DefaultHttpClient(); + if (host.startsWith("https://")) { + sslClient(httpClient); + } + + return httpClient; + } + + private static void sslClient(HttpClient httpClient) { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + X509TrustManager tm = new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted(X509Certificate[] xcs, String str) { + + } + public void checkServerTrusted(X509Certificate[] xcs, String str) { + + } + }; + ctx.init(null, new TrustManager[] { tm }, null); + SSLSocketFactory ssf = new SSLSocketFactory(ctx); + ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + ClientConnectionManager ccm = httpClient.getConnectionManager(); + SchemeRegistry registry = ccm.getSchemeRegistry(); + registry.register(new Scheme("https", 443, ssf)); + } catch (KeyManagementException ex) { + throw new RuntimeException(ex); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException(ex); + } + } +} diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/logback.xml b/ruoyi-modules/ruoyi-member/src/main/resources/logback.xml index 5273bf3..7691358 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/logback.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/logback.xml @@ -58,7 +58,7 @@ </appender> <!-- 系统模块日志级别控制 --> - <logger name="com.ruoyi" level="info" /> + <logger name="com.ruoyi" level="debug" /> <!-- Spring日志级别控制 --> <logger name="org.springframework" level="warn" /> diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml index 0aa67d0..79505f2 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml @@ -134,7 +134,7 @@ </delete> - <select id="getOneByMiniOpenid" parameterType="com.ruoyi.system.api.domain.poji.member.Member"> + <select id="getOneByMiniOpenid" resultType="com.ruoyi.system.api.domain.poji.member.Member"> SELECT * FROM t_member WHERE mini_openid = #{miniOpenid} </select> @@ -156,4 +156,16 @@ AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.referrer LIKE CONCAT('%',#{param.keyword},'%')) </if> </select> + + <select id="pageMerCashMember" resultType="com.ruoyi.member.domain.vo.MerCashMemberPageVo"> + SELECT + tm.user_id userId, + tm.real_name nickName, + tm.mobile mobile + FROM t_member tm + WHERE tm.relationShopId = #{param.shopId} + <if test="param.keyword != null and param.keyword != ''"> + AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%')) + </if> + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerConsumerController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerConsumerController.java new file mode 100644 index 0000000..363734a --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerConsumerController.java @@ -0,0 +1,52 @@ +package com.ruoyi.order.controller.business; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.order.domain.dto.MerConsumerGoodsDto; +import com.ruoyi.order.domain.dto.MerMemberNoClearOrderDto; +import com.ruoyi.order.domain.dto.MerSureConsumerGoodsDto; +import com.ruoyi.order.domain.vo.MerConsumerGoodsVo; +import com.ruoyi.order.domain.vo.MerMemberNoClearOrderVo; +import com.ruoyi.order.service.order.ConsumerGoodsService; +import io.swagger.annotations.ApiOperation; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.util.List; + +/** + * @author jqs34 + * @ClassName MerConsumerController + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerConsumerController { + + @Autowired + private ConsumerGoodsService consumerGoodsService; + + @RequestMapping(value = "/listMerConsumerGoods", method = RequestMethod.POST) + @ApiOperation(value = "获取用户服务列表") + public R<MerConsumerGoodsVo> listMerConsumerGoods(@RequestBody MerConsumerGoodsDto merConsumerGoodsDto) { + Long userId = SecurityUtils.getUserId(); + merConsumerGoodsDto.setUserId(userId); + MerConsumerGoodsVo merConsumerGoodsVo = consumerGoodsService.listMerConsumerGoods(merConsumerGoodsDto); + return R.ok(merConsumerGoodsVo); + } + + + @RequestMapping(value = "/sureMerConsumerGoods", method = RequestMethod.POST) + @ApiOperation(value = "确认商品次数") + public R sureMerConsumerGoods(@RequestBody MerSureConsumerGoodsDto merSureConsumerGoodsDto) { + Long userId = SecurityUtils.getUserId(); + merSureConsumerGoodsDto.setUserId(userId); + consumerGoodsService.sureMerConsumerGoods(merSureConsumerGoodsDto); + return R.ok(); + } +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerGoodsController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerGoodsController.java index ce73cb3..9b45824 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerGoodsController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerGoodsController.java @@ -52,6 +52,7 @@ @ApiOperation(value = "编辑商户商品价格") public R editMerShopGoods(@RequestBody MerShopGoodsEditDto merShopGoodsEditDto) { Long userId = SecurityUtils.getUserId(); + merShopGoodsEditDto.setUserId(userId); goodsService.editMerShopGoods(merShopGoodsEditDto); return R.ok(); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java index 92f54b2..53bff3f 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java @@ -1,14 +1,15 @@ package com.ruoyi.order.controller.business; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.order.domain.dto.AppSureOrderDto; -import com.ruoyi.order.domain.dto.MerVerifyCodeDto; -import com.ruoyi.order.domain.dto.MerVerifyOrderDto; +import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.constant.AppErrorConstant; +import com.ruoyi.system.api.domain.dto.MerPageDto; import com.ruoyi.system.api.domain.poji.member.Member; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -17,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; + +import java.util.List; /** * @author jqs34 @@ -39,6 +42,7 @@ @ApiOperation(value = "核销code") public R<MerVerifyCodeVo> verifyCode(@RequestBody MerVerifyCodeDto merVerifyCodeDto) { Long userId = SecurityUtils.getUserId(); + merVerifyCodeDto.setUserId(userId); String verifyCode = merVerifyCodeDto.getVerifyCode(); String[] verifyCodeArr = verifyCode.split("-"); MerVerifyCodeVo merVerifyCodeVo = new MerVerifyCodeVo(); @@ -68,8 +72,42 @@ @ApiOperation(value = "核销订单") public R<MerVerifyOrderVo> sureVerifyOrder(@RequestBody MerVerifyOrderDto merVerifyOrderDto) { Long userId = SecurityUtils.getUserId(); + merVerifyOrderDto.setUserId(userId); MerVerifyOrderVo merVerifyOrderVo = orderService.sureVerifyOrder(merVerifyOrderDto); return R.ok(merVerifyOrderVo); } + + @RequestMapping(value = "/pageMerMemberNoClearOrder", method = RequestMethod.POST) + @ApiOperation(value = "分页获取用户未结清订单") + public R<Page<MerMemberNoClearOrderVo>> pageMerMemberNoClearOrder(@RequestBody MerMemberNoClearOrderDto merMemberNoClearOrderDto) { + Long userId = SecurityUtils.getUserId(); + merMemberNoClearOrderDto.setUserId(userId); + Page<MerMemberNoClearOrderVo> page = new Page<>(); + page.setSize(merMemberNoClearOrderDto.getPageSize()); + page.setCurrent(merMemberNoClearOrderDto.getPageNum()); + List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderService.pageMerMemberNoClearOrder(page,merMemberNoClearOrderDto); + return R.ok(page.setRecords(merMemberNoClearOrderVoList)); + } + + @RequestMapping(value = "/merCloseOrder", method = RequestMethod.POST) + @ApiOperation(value = "结清订单") + public R merCloseOrder(@RequestBody MerCloseOrderDto merCloseOrderDto) { + Long userId = SecurityUtils.getUserId(); + merCloseOrderDto.setUserId(userId); + orderService.merCloseOrder(merCloseOrderDto); + return R.ok(); + } + + + @RequestMapping(value = "/createNewOrder", method = RequestMethod.POST) + @ApiOperation(value = "创建新订单") + public R createNewOrder(@RequestBody MerNewOrderDto merNewOrderDto) { + Long userId = SecurityUtils.getUserId(); + merNewOrderDto.setUserId(userId); + orderService.createNewOrder(merNewOrderDto); + return R.ok(); + } + + } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/ActivityController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/ActivityController.java index 30ecf9c..e95517e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/ActivityController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/ActivityController.java @@ -25,7 +25,6 @@ @Autowired private ActivityGoodsService activityGoodsService; - @InnerAuth @PostMapping("/getActivityGoods") public R<ActivityGoods> getActivityGoods(@RequestBody String goodsId) { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java index 4c6728e..e76ae26 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java @@ -25,14 +25,14 @@ @Autowired private OrderService orderService; - @InnerAuth + @PostMapping("/getAppOrderTotal") public R<AppOrderTotalVo> getAppOrderTotal(@RequestBody Long userId){ AppOrderTotalVo appOrderTotalVo = orderService.getAppOrderTotal(userId); return R.ok(appOrderTotalVo); } - @InnerAuth + @PostMapping("/getMerHomeTotal") public R<MerHomeShopTotalVo> getMerHomeTotal(@RequestBody MerHomeShopTotalVo merHomeShopTotalVo){ merHomeShopTotalVo = orderService.getMerHomeTotal(merHomeShopTotalVo); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java new file mode 100644 index 0000000..9ae6559 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java @@ -0,0 +1,27 @@ +package com.ruoyi.order.domain.dto; + +import com.ruoyi.system.api.domain.dto.MerBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author jqs34 + * @ClassName MerCloseOrderDto + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerCloseOrderDto extends MerBaseDto { + + @ApiModelProperty(value = "订单id") + private String orderId; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payMoney; + + @ApiModelProperty(value = "支付备注") + private String payRemark; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerConsumerGoodsDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerConsumerGoodsDto.java new file mode 100644 index 0000000..1ac7aaa --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerConsumerGoodsDto.java @@ -0,0 +1,23 @@ +package com.ruoyi.order.domain.dto; + +import com.ruoyi.system.api.domain.dto.MerBaseDto; +import com.ruoyi.system.api.domain.dto.MerPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MerConsumerGoodsDto + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerConsumerGoodsDto extends MerBaseDto { + + @ApiModelProperty(name = "会员用户id") + private Long memberUserId; + + @ApiModelProperty("商品类型1周期2服务3体验") + private Integer goodsType; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerGoodsPageDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerGoodsPageDto.java index d8f97d8..1750e1e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerGoodsPageDto.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerGoodsPageDto.java @@ -15,6 +15,9 @@ @Data public class MerGoodsPageDto extends MerPageDto { + @ApiModelProperty(value = "商品名称") + private String goodsName; + @ApiModelProperty(value = "商品类型1周期2服务3体验4单品") private Integer goodsType; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerMemberNoClearOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerMemberNoClearOrderDto.java new file mode 100644 index 0000000..a6b0ae1 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerMemberNoClearOrderDto.java @@ -0,0 +1,21 @@ +package com.ruoyi.order.domain.dto; + +import com.ruoyi.system.api.domain.dto.MerPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MerMemberNoClearOrderDto + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerMemberNoClearOrderDto extends MerPageDto { + + + @ApiModelProperty(value = "会员用户id") + private Long memberUserId; + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java new file mode 100644 index 0000000..9eb703e --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java @@ -0,0 +1,34 @@ +package com.ruoyi.order.domain.dto; + +import com.ruoyi.system.api.domain.dto.MerBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author jqs34 + * @ClassName MerNewOrderDto + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerNewOrderDto extends MerBaseDto { + + @ApiModelProperty(value = "购买用户id") + private Long buyUserId; + + @ApiModelProperty(value = "购买列表") + List<AppBuyGoodsDto> appBuyGoodsDtoList; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payMoney; + + @ApiModelProperty(value = "支付方式") + private Integer payType; + + @ApiModelProperty(value = "订单备注") + private String orderRemark; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsDto.java new file mode 100644 index 0000000..d8de4b1 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsDto.java @@ -0,0 +1,25 @@ +package com.ruoyi.order.domain.dto; + +import com.ruoyi.system.api.domain.dto.MerBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author jqs34 + * @ClassName MerSureConsumerGoodsDto + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerSureConsumerGoodsDto extends MerBaseDto { + + @ApiModelProperty(name = "会员用户id") + private Long memberUserId; + + @ApiModelProperty(name = "确认服务列表") + private List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList; + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsListDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsListDto.java new file mode 100644 index 0000000..cb6c7f4 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsListDto.java @@ -0,0 +1,22 @@ +package com.ruoyi.order.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MerSureConsumerGoodsListDto + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerSureConsumerGoodsListDto { + + + @ApiModelProperty(name = "服务id") + private String consumerGoodsId; + + @ApiModelProperty(name = "服务次数") + private Integer service_num; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java index e447e06..06e167a 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java @@ -103,6 +103,11 @@ @TableField("use_time") private String useTime; + /** + * 商品类型1周期2服务3体验 + */ + @TableField("goods_type") + private Integer goodsType; @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java index eae04e2..fb86dcf 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java @@ -150,6 +150,11 @@ */ @TableField("goods_num") private Integer goodsNum; + /** + * 结清标记 + */ + @TableField("close_flag") + private Integer closeFlag; @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java new file mode 100644 index 0000000..eac3bdb --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java @@ -0,0 +1,45 @@ +package com.ruoyi.order.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @ClassName MerConsumerGoodsVo + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerConsumerGoodsListVo { + + @ApiModelProperty("服务id") + private String consumerGoodsId; + + @ApiModelProperty("服务状态-1删除1未完成2完成") + private Integer serviceStatus; + + @ApiModelProperty("商户id") + private Long shopId; + + @ApiModelProperty("商品类型1周期2服务3体验4单品") + private Integer goodsType; + + @ApiModelProperty("商品名称") + private String goodsName; + + @ApiModelProperty("商品图片") + private String goodsPicture; + + @ApiModelProperty("商品调理问题") + private String goodsNurses; + + @ApiModelProperty("周期标记") + private Integer cycleNumFlag; + + @ApiModelProperty("服务次数") + private Integer serviceNum; + + @ApiModelProperty("消耗次数") + private Integer usedNum; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsVo.java new file mode 100644 index 0000000..dfadc67 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsVo.java @@ -0,0 +1,25 @@ +package com.ruoyi.order.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author jqs34 + * @ClassName MerConsumerGoodsVo + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerConsumerGoodsVo { + + @ApiModelProperty("未确认商品") + private List<MerConsumerGoodsListVo> noSureList; + + @ApiModelProperty("确认商品") + private List<MerConsumerGoodsListVo> sureList; + + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java new file mode 100644 index 0000000..ff23b5a --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java @@ -0,0 +1,42 @@ +package com.ruoyi.order.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author jqs34 + * @ClassName MerMemberUnclearOrder + * @description: TODO + * @date 2023年05月05日 + * @version: 1.0 + */ +@Data +public class MerMemberNoClearOrderVo { + + @ApiModelProperty(value = "订单id") + private String orderId; + + @ApiModelProperty("订单编号") + private String orderNo; + + @ApiModelProperty(value = "商品总价") + private BigDecimal orderGoodsMoney; + + @ApiModelProperty(value = "优惠券抵扣") + private BigDecimal couponDiscount; + + @ApiModelProperty("应收金额") + private BigDecimal receivableMoney; + + @ApiModelProperty("应收订金") + private BigDecimal receivableDeposit; + + @ApiModelProperty("订单实际支付金额") + private BigDecimal payMoney; + + @ApiModelProperty("订单未支付金额") + private BigDecimal unPaidMoney; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java index 77c99ca..dc52ff3 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java @@ -1,5 +1,6 @@ package com.ruoyi.order.domain.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -64,4 +65,7 @@ @ApiModelProperty(value = "用户电话") private String userMobile; + + @ApiModelProperty("结清标记0否1是") + private Integer closeFlag; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java index 9ab8390..12f5e71 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java @@ -2,9 +2,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.order.domain.dto.AppConsumerPageDto; +import com.ruoyi.order.domain.dto.MerConsumerGoodsDto; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.domain.vo.AppConsumerPageVo; +import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -26,4 +28,18 @@ * @return */ List<AppConsumerPageVo> pageUserConsumerGoods(Page page, @Param("param") AppConsumerPageDto appConsumerPageDto); + + /** + * 获取未确认服务商品 + * @param merConsumerGoodsDto + * @return + */ + List<MerConsumerGoodsListVo> listMerNoSureConsumerGoods(@Param("param") MerConsumerGoodsDto merConsumerGoodsDto); + + /** + * 获取已确认服务商品 + * @param merConsumerGoodsDto + * @return + */ + List<MerConsumerGoodsListVo> listMerConsumerGoods(@Param("param") MerConsumerGoodsDto merConsumerGoodsDto); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java index d0bcccc..8c0d17a 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java @@ -5,6 +5,8 @@ import com.ruoyi.order.domain.pojo.order.Order; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.domain.vo.AppUserOrderPageVo; +import com.ruoyi.order.domain.vo.MerMemberNoClearOrderVo; +import com.ruoyi.system.api.domain.dto.MerPageDto; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -26,4 +28,12 @@ * @return */ List<AppUserOrderPageVo> pageUserOrder(Page page, @Param("param") AppUserOrderPageDto appUserOrderPageDto); + + /** + * 收银未结清订单列表 + * @param page + * @param userId + * @return + */ + List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, @Param("userId") Long userId); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java index 355537a..ef6f2e0 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java @@ -4,8 +4,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.order.domain.dto.AppConsumerPageDto; +import com.ruoyi.order.domain.dto.MerConsumerGoodsDto; +import com.ruoyi.order.domain.dto.MerSureConsumerGoodsDto; +import com.ruoyi.order.domain.dto.MerSureConsumerGoodsListDto; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; import com.ruoyi.order.domain.vo.AppConsumerPageVo; +import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo; +import com.ruoyi.order.domain.vo.MerConsumerGoodsVo; import com.ruoyi.order.mapper.order.ConsumerGoodsMapper; import com.ruoyi.order.service.order.ConsumerGoodsService; import org.springframework.stereotype.Service; @@ -37,4 +42,39 @@ public List<AppConsumerPageVo> pageUserConsumerGoods(Page page, AppConsumerPageDto appConsumerPageDto){ return consumerGoodsMapper.pageUserConsumerGoods(page, appConsumerPageDto); } + + /** + * 获取会员服务商品 + * @param merConsumerGoodsDto + * @return + */ + @Override + public MerConsumerGoodsVo listMerConsumerGoods(MerConsumerGoodsDto merConsumerGoodsDto){ + MerConsumerGoodsVo merConsumerGoodsVo = new MerConsumerGoodsVo(); + if(merConsumerGoodsDto.getGoodsType()==1){ + List<MerConsumerGoodsListVo> noSureList = consumerGoodsMapper.listMerNoSureConsumerGoods(merConsumerGoodsDto); + merConsumerGoodsVo.setNoSureList(noSureList); + } + List<MerConsumerGoodsListVo> sureList = consumerGoodsMapper.listMerConsumerGoods(merConsumerGoodsDto); + merConsumerGoodsVo.setSureList(sureList); + return merConsumerGoodsVo; + } + + /** + * 确认商品次数 + * @param merSureConsumerGoodsDto + */ + @Override + public void sureMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){ + List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); + if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){ + ConsumerGoods consumerGoods; + for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){ + consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId()); + consumerGoods.setCycleNumFlag(1); + consumerGoods.setServiceNum(merSureConsumerGoodsListDto.getService_num()); + this.saveOrUpdate(consumerGoods); + } + } + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 9a4f812..ee5a004 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -34,7 +34,6 @@ import com.ruoyi.order.service.goods.GoodsService; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; -import io.swagger.annotations.ApiModelProperty; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -340,10 +339,12 @@ order.setPayMoney(orderPayMoney); order.setOnlinePayMoney(orderPayMoney); appPlaceOrderVo.setPayMoney(orderPayMoney); + order.setCloseFlag(1); }else if(order.getPayType()==2){ order.setPayMoney(orderPayDeposit); order.setOnlinePayMoney(orderPayDeposit); appPlaceOrderVo.setPayMoney(orderPayDeposit); + order.setCloseFlag(0); } order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); @@ -500,6 +501,7 @@ SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); merVerifyOrderVo.setUserName(sysUser.getNickName()); merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); + merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); return merVerifyOrderVo; } @@ -520,6 +522,7 @@ order.setUseUserId(merVerifyOrderDto.getUserId()); order.setOfflinePayMoney(relReceiveMoney); order.setPayMoney(order.getPayMoney().add(relReceiveMoney)); + order.setCloseFlag(1); this.saveOrUpdate(order); //创建服务商品 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listVoByOrderId(orderId); @@ -539,6 +542,7 @@ consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); consumerGoods.setCreateTime(nowTime); consumerGoodsService.save(consumerGoods); } @@ -560,4 +564,189 @@ merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); return merVerifyOrderVo; } + + /** + * 收银未结清订单列表 + * @param page + * @param merMemberNoClearOrderDto + * @return + */ + @Override + public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto){ + List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page,merMemberNoClearOrderDto.getMemberUserId()); + if(merMemberNoClearOrderVoList!=null&&!merMemberNoClearOrderVoList.isEmpty()){ + for(MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList){ + merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney())); + } + } + return merMemberNoClearOrderVoList; + } + + /** + * 结清订单 + * @param merCloseOrderDto + */ + @Override + public void merCloseOrder(MerCloseOrderDto merCloseOrderDto){ + Order order = this.getById(merCloseOrderDto.getOrderId()); + order.setOfflinePayMoney(merCloseOrderDto.getPayMoney()); + order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney())); + order.setCloseFlag(1); + this.saveOrUpdate(order); + } + + /** + * 创建新订单 + * @param merNewOrderDto + */ + @Override + public void createNewOrder(MerNewOrderDto merNewOrderDto){ + Long userId = merNewOrderDto.getBuyUserId(); + //创建订单 + List<AppBuyGoodsDto> appBuyGoodsDtoList = merNewOrderDto.getAppBuyGoodsDtoList(); + String goodsId; + Integer buyNum; + BigDecimal buyNumBig; + Integer serviceNum; + Integer goodsNum = 0; + Long userCouponId; + Goods goods; + BigDecimal goodsPrice; + BigDecimal goodsTotalPrice; + BigDecimal goodsRealPrice; + List<AppUserCouponVo> appUserCouponVoList = remoteMemberService.listVoUserCouponByUserId(userId).getData(); + Map<Long,AppUserCouponVo> appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); + AppUserCouponVo appUserCouponVo; + Integer couponType; + BigDecimal moneyThreshold; + BigDecimal discountMoney = new BigDecimal("0.00"); + BigDecimal discountPercent; + BigDecimal goodsDeposit; + BigDecimal orderGoodsMoney = new BigDecimal("0.00"); + BigDecimal couponDiscount = new BigDecimal("0.00"); + BigDecimal orderPayDeposit = new BigDecimal("0.00"); + BigDecimal orderPayMoney = new BigDecimal("0.00"); + String orderId = IdUtils.simpleUUID(); + String orderNo = CodeFactoryUtil.getShopOrderNo(); + OrderGoods orderGoods; + String orderGoodsId; + for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ + goodsId = appBuyGoodsDto.getGoodsId(); + userCouponId = appBuyGoodsDto.getUserCouponId(); + goods = goodsService.getById(goodsId); + buyNum = appBuyGoodsDto.getBuyNum(); + goodsPrice = goods.getSalesPrice(); + serviceNum = goods.getServiceNum(); + //商户定制价格 + ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(merNewOrderDto.getShopId(),goods.getGoodsId()); + if(shopGoods!=null){ + goodsPrice = shopGoods.getSalesPrice(); + serviceNum = shopGoods.getServiceNum(); + } + buyNumBig = BigDecimal.valueOf(buyNum); + goodsTotalPrice = goodsPrice.multiply(buyNumBig); + goodsRealPrice = goodsTotalPrice; + if(userCouponId!=null){ + appUserCouponVo = appUserCouponVoMap.get(userCouponId); + if(StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId)){ + couponType = appUserCouponVo.getCouponType(); + if(couponType == 1 && appUserCouponVo.getMoneyThreshold()!=null && appUserCouponVo.getDiscountMoney()!=null){ + moneyThreshold = appUserCouponVo.getMoneyThreshold(); + if(goodsTotalPrice.compareTo(moneyThreshold)>=0){ + discountMoney = appUserCouponVo.getDiscountMoney(); + goodsRealPrice = goodsTotalPrice.subtract(discountMoney); + } + }else if(couponType == 2 && appUserCouponVo.getDiscountPercent()!=null){ + discountPercent = appUserCouponVo.getDiscountPercent(); + goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP); + discountMoney = goodsRealPrice.subtract(goodsTotalPrice); + }else if(couponType == 3 && appUserCouponVo.getDiscountMoney()!=null){ + discountMoney = appUserCouponVo.getDiscountMoney(); + goodsRealPrice = goodsTotalPrice.subtract(discountMoney); + } + } + } + + goodsDeposit = goods.getSubscription(); + if(goodsDeposit == null){ + goodsDeposit = new BigDecimal("0.00"); + } + goodsNum = goodsNum + buyNum; + orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); + couponDiscount = couponDiscount.add(discountMoney); + orderPayDeposit = orderPayDeposit.add(goodsDeposit); + orderPayMoney = orderPayMoney.add(goodsRealPrice); + //创建OrderGoods + orderGoods = new OrderGoods(); + orderGoodsId = IdUtils.simpleUUID(); + orderGoods.setOrderGoodsId(orderGoodsId); + orderGoods.setDelFlag(0); + orderGoods.setOrderId(orderId); + orderGoods.setGoodsId(goodsId); + orderGoods.setBuyNum(buyNum); + orderGoods.setCouponId(userCouponId.toString()); + orderGoods.setGoodsPrice(goodsPrice); + orderGoods.setGoodsTotalMoney(orderGoodsMoney); + orderGoods.setGoodsReceivableMoney(goodsRealPrice); + orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); + orderGoods.setServiceNum(serviceNum); + orderGoods.setGoodsType(goods.getGoodsType()); + orderGoodsService.save(orderGoods); + } + Order order = new Order(); + order.setOrderId(orderId); + order.setDelFlag(0); + order.setOrderStatus(3); + order.setOrderNo(orderNo); + order.setOrderFrom(1); + order.setShopId(merNewOrderDto.getShopId()); + order.setUserId(userId); + order.setOrderMoney(orderGoodsMoney); + order.setCouponMoney(couponDiscount); + order.setDiscountMoney(couponDiscount); + order.setReceivableMoney(orderPayMoney); + order.setPayType(1); + if(order.getPayType()==1){ + order.setPayMoney(orderPayMoney); + order.setOnlinePayMoney(orderPayMoney); + order.setCloseFlag(1); + }else if(order.getPayType()==2){ + order.setPayMoney(orderPayDeposit); + order.setOnlinePayMoney(orderPayDeposit); + order.setCloseFlag(0); + } + order.setOrderRemark(merNewOrderDto.getOrderRemark()); + order.setGoodsNum(goodsNum); + order.setCreateTime(new Date()); + order.setPayTime(new Date()); + order.setUseTime(new Date()); + order.setUseUserId(merNewOrderDto.getUserId()); + order.setPayMoney(merNewOrderDto.getPayMoney()); + order.setOnlinePayMoney(new BigDecimal("0.00")); + order.setOfflinePayMoney(merNewOrderDto.getPayMoney()); + order.setCloseFlag(1); + this.save(order); + //创建服务 + List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listVoByOrderId(orderId); + ConsumerGoods consumerGoods; + String consumerGoodsId; + for(AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList){ + consumerGoods = new ConsumerGoods(); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); + consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); + consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); + consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setCreateTime(new Date()); + consumerGoodsService.save(consumerGoods); + } + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java index bceada6..ed3abba 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java @@ -2,9 +2,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.order.domain.dto.AppConsumerPageDto; +import com.ruoyi.order.domain.dto.MerConsumerGoodsDto; +import com.ruoyi.order.domain.dto.MerSureConsumerGoodsDto; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.domain.vo.AppConsumerPageVo; +import com.ruoyi.order.domain.vo.MerConsumerGoodsVo; import java.util.List; @@ -25,4 +28,17 @@ * @return */ List<AppConsumerPageVo> pageUserConsumerGoods(Page page, AppConsumerPageDto appConsumerPageDto); + + /** + * 获取会员服务商品 + * @param merConsumerGoodsDto + * @return + */ + MerConsumerGoodsVo listMerConsumerGoods(MerConsumerGoodsDto merConsumerGoodsDto); + + /** + * 确认商品次数 + * @param merSureConsumerGoodsDto + */ + void sureMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index 226ce20..367d1e8 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java @@ -1,14 +1,12 @@ package com.ruoyi.order.service.order; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ruoyi.order.domain.dto.MerVerifyOrderDto; +import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.vo.*; import com.ruoyi.system.api.domain.dto.AppBaseGetDto; -import com.ruoyi.order.domain.dto.AppPlaceOrderDto; -import com.ruoyi.order.domain.dto.AppSureOrderDto; -import com.ruoyi.order.domain.dto.AppUserOrderPageDto; import com.ruoyi.order.domain.pojo.order.Order; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.api.domain.dto.MerPageDto; import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; @@ -88,4 +86,26 @@ * @return */ MerVerifyOrderVo sureVerifyOrder(MerVerifyOrderDto merVerifyOrderDto); + + /** + * 收银未结清订单列表 + * @param page + * @param merMemberNoClearOrderDto + * @return + */ + List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto); + + + /** + * 结清订单 + * @param merCloseOrderDto + */ + void merCloseOrder(MerCloseOrderDto merCloseOrderDto); + + /** + * 创建新订单 + * @param merNewOrderDto + */ + void createNewOrder(MerNewOrderDto merNewOrderDto); + } diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/goods/GoodsMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/goods/GoodsMapper.xml index 9d2e8c5..25107d7 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/goods/GoodsMapper.xml @@ -303,6 +303,12 @@ LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{shopId} WHERE tg.del_flag = 0 AND tg.goods_status = 1 + <if test="param.goodsType != null"> + AND tg.goods_type = #{param.goodsType} + </if> + <if test="param.goodsName != null and param.goodsName != ''"> + AND tg.goods_name LIKE CONCAT('%',#{param.goodsName},'%') + </if> ORDER BY tg.create_time DESC </select> </mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml index da21e71..58b94dd 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml @@ -122,7 +122,7 @@ tcg.consumer_goods_id consumerGoodsId, tcg.service_status serviceStatus, tcg.shop_id shopId, - tg.goods_type goodsType, + tcg.goods_type goodsType, tg.goods_name goodsName, tgf.file_url goodsPicture, tg.goods_nurses goodsNurses, @@ -138,4 +138,44 @@ </if> ORDER BY tcg.cycle_num_flag ASC, tcg.create_time DESC </select> + + <select id="pageUserConsumerGoods" resultType="com.ruoyi.order.domain.vo.MerConsumerGoodsListVo"> + SELECT + tcg.consumer_goods_id consumerGoodsId, + tcg.service_status serviceStatus, + tcg.shop_id shopId, + tcg.goods_type goodsType, + tg.goods_name goodsName, + tgf.file_url goodsPicture, + tg.goods_nurses goodsNurses, + tcg.cycle_num_flag cycleNumFlag, + tcg.service_num serviceNum, + tcg.used_num usedNum + FROM t_consumer_goods tcg + INNER JOIN t_goods tg ON tcg.goods_id = tg.goods_id + INNER JOIN t_goods_file tgf ON tgf.goods_id = tg.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 + WHERE tcg.del_flag = 0 AND tcg.user_id = #{param.userId} AND tcg.shop_id = #{param.shopId} + AND tcg.goods_type = 1 AND tcg.cycle_num_flag = 0 + ORDER BY tcg.create_time DESC + </select> + + <select id="listMerConsumerGoods" resultType="com.ruoyi.order.domain.vo.MerConsumerGoodsListVo"> + SELECT + tcg.consumer_goods_id consumerGoodsId, + tcg.service_status serviceStatus, + tcg.shop_id shopId, + tcg.goods_type goodsType, + tg.goods_name goodsName, + tgf.file_url goodsPicture, + tg.goods_nurses goodsNurses, + tcg.cycle_num_flag cycleNumFlag, + tcg.service_num serviceNum, + tcg.used_num usedNum + FROM t_consumer_goods tcg + INNER JOIN t_goods tg ON tcg.goods_id = tg.goods_id + INNER JOIN t_goods_file tgf ON tgf.goods_id = tg.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 + WHERE tcg.del_flag = 0 AND tcg.user_id = #{param.userId} AND tcg.shop_id = #{param.shopId} + AND tcg.goods_type = #{param.goodsType} AND tcg.cycle_num_flag = 1 + ORDER BY tcg.create_time DESC + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml index d5cef6c..9d5148c 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml @@ -174,7 +174,7 @@ toc.order_id orderId, toc.order_no orderNo, toc.order_status orderStatus, - tooc.order_from orderFrom, + toc.order_from orderFrom, toc.receivable_money receivableMoney, toc.goods_num goodsNum, toc.shop_id shopId, @@ -198,4 +198,17 @@ ORDER BY toc.create_time DESC </select> + <select id="pageUserOrder" resultType="com.ruoyi.order.domain.vo.MerMemberNoClearOrderVo"> + SELECT + toc.order_id orderId, + toc.order_no orderNo, + toc.order_money orderGoodsMoney, + toc.coupon_money couponDiscount, + toc.receivable_money receivableMoney, + toc.receivable_deposit receivableDeposit, + toc.pay_money payMoney + FROM t_order toc + WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.orderStatus = 2 AND toc.close_flag = 0 + ORDER BY toc.create_time DESC + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java index 984dd7d..bc3d4db 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java @@ -27,7 +27,7 @@ @Resource private ShopService shopService; - @InnerAuth + @PostMapping("/getShop") public R<Shop> getShop(@RequestBody Long shopId) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java index 76c2ab3..15243f1 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java @@ -23,7 +23,7 @@ @Resource private SysTagService sysTagService; - @InnerAuth + @PostMapping("/getSysTag") public R<SysTag> getSysTag(@RequestBody Long sysTagId) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java index f288fd7..694c53c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java @@ -352,10 +352,11 @@ * @date 2023/4/30 15:36 * @version 1.0 */ - @InnerAuth @PostMapping("/getSysUser") public R<SysUser> getSysUser(@RequestBody Long userId){ + logger.info("userId"+userId); SysUser sysUser = userService.selectUserById(userId); + logger.info("sysUser"+sysUser.toString()); return R.ok(sysUser); } @@ -367,7 +368,7 @@ */ @PostMapping("/registerUser") public R<SysUser> registerUser(@RequestBody SysUser sysUser){ - sysUser = userService.registerUser(sysUser); + userService.registerUser(sysUser); return R.ok(sysUser); } @@ -379,7 +380,6 @@ * @date 2023/4/30 15:32 * @version 1.0 */ - @InnerAuth @PostMapping("/updateUserMobile") public R updateUserMobile(@RequestBody SysUser sysUser){ userService.updateUserMobile(sysUser); @@ -391,7 +391,6 @@ * @param appEditUserDto * @return */ - @InnerAuth @PostMapping("/editUserInfo") public R editUserInfo(@RequestBody AppEditUserDto appEditUserDto){ userService.editUserInfo(appEditUserDto); -- Gitblit v1.7.1