123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739 |
- package com.willalp.web.controller.app;
- import cn.hutool.core.collection.CollectionUtil;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.ArrayUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.toolkit.IdWorker;
- import com.willalp.app.service.IHsAppHomeService;
- import com.willalp.canteen.domain.*;
- import com.willalp.canteen.domain.req.AppGetCuisinesReq;
- import com.willalp.canteen.domain.req.AppOrderPaymentReq;
- import com.willalp.canteen.domain.req.GiftCustomPayReq;
- import com.willalp.canteen.domain.resp.CuisineListResp;
- import com.willalp.canteen.service.*;
- import com.willalp.common.core.controller.BaseController;
- import com.willalp.common.core.domain.AjaxResult;
- import com.willalp.common.core.domain.entity.SysUser;
- import com.willalp.common.core.page.TableDataInfo;
- import com.willalp.common.enums.ConsumeChangeEnum;
- import com.willalp.common.enums.NumberRuleEnum;
- import com.willalp.common.enums.PartternIdEnum;
- import com.willalp.common.enums.PlaceEnum;
- import com.willalp.common.exception.base.BaseException;
- import com.willalp.common.utils.DateUtils;
- import com.willalp.common.utils.SecurityUtils;
- import com.willalp.common.utils.bean.BeanUtils;
- import com.willalp.consume.domain.ConsumeMaintain;
- import com.willalp.consume.service.IConsumeMaintainService;
- import com.willalp.files.domain.HsOrgPersonnelFiles;
- import com.willalp.files.service.IHsOrgPersonnelFilesService;
- import com.willalp.framework.web.service.SysLoginService;
- import com.willalp.integral.domain.Integral;
- import com.willalp.integral.service.IIntegralService;
- import com.willalp.number.domain.req.NumberRuleReq;
- import com.willalp.number.service.IHsSysNumberRuleService;
- import com.willalp.push.service.IHsAppPushService;
- import com.willalp.system.domain.SysCardInfo;
- import com.willalp.system.domain.SysUserOrganization;
- import com.willalp.system.domain.req.AppLoginReq;
- import com.willalp.system.domain.req.AppSysReq;
- import com.willalp.system.domain.resp.AppUserResp;
- import com.willalp.system.domain.resp.OrganizationListResp;
- import com.willalp.system.service.*;
- import com.willalp.wx.domain.WxMsgTemplateTakeFood;
- import com.willalp.wx.enums.WxTemplateKeyEnum;
- import com.willalp.wx.service.WxMsgService;
- import com.willalp.wx.utils.WxUtils;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- import java.util.*;
- import java.util.stream.Collectors;
- @Api("app接口")
- @RestController
- @RequestMapping("/app")
- public class AppController extends BaseController {
- @Autowired
- IHsCanteenMenuService hsCanteenMenuService;
- @Autowired
- IHsCanteenMenuRegisterService hsCanteenMenuRegisterService;
- @Autowired
- IHsSysNumberRuleService hsSysNumberRuleService;
- @Autowired
- IHsCanteenOrderService hsCanteenOrderService;
- @Autowired
- IHsCanteenOrderDetailService hsCanteenOrderDetailService;
- @Autowired
- ISysUserService sysUserService;
- @Autowired
- IIntegralService integralService;
- @Autowired
- IConsumeMaintainService consumeMaintainService;
- @Autowired
- ISysCardInfoService sysCardInfoService;
- @Autowired
- SysLoginService loginService;
- @Autowired
- ISysConfigService sysConfigService;
- @Autowired
- ISysUserOrganizationService sysUserOrganizationService;
- @Autowired
- private ISysUserService userService;
- @Autowired
- private IHsCanteenDiningPlaceService hsCanteenDiningPlaceService;
- @Autowired
- private IHsGiftService hsGiftService;
- @Resource
- private ISysNoticeService noticeService;
- @Resource
- private IHsAppHomeService hsAppHomeService;
- @Resource
- private WxMsgService wxMsgService;
- @Resource
- private WxUtils wxUtils;
- /**
- * 获取首页配置数据
- *
- * @param orgCode
- * @return
- */
- @ApiOperation("获取首页配置数据")
- @GetMapping("/getHomeConfigData")
- public AjaxResult getHomeConfigData(@RequestParam(value = "orgCode", required = false)
- @ApiParam("机构编号") String orgCode) {
- return AjaxResult.success(hsAppHomeService.getHomeConfigData(orgCode).get("data"));
- }
- /**
- * 查询菜品
- *
- * @param appGetCuisinesReq
- * @return
- */
- @ApiOperation("获取菜品")
- @RequestMapping("/cuisines")
- @ResponseBody
- public AjaxResult getMenuCuisines(@RequestBody AppGetCuisinesReq appGetCuisinesReq) {
- Map<String, Object> result = new HashMap<>();
- HsCanteenMenu hsCanteenMenu = new HsCanteenMenu();
- BeanUtils.copyBeanProp(hsCanteenMenu, appGetCuisinesReq);
- hsCanteenMenu.setConsumerType(null);
- List<HsCanteenMenu> menus = hsCanteenMenuService.selectHsCanteenMenuList(hsCanteenMenu);
- menus = menus.stream().filter(o ->
- Arrays.asList(o.getConsumerType().split(",")).contains(String.valueOf(appGetCuisinesReq.getConsumerType())))
- .collect(Collectors.toList());
- if (menus.size() > 0) {
- result.put("patternId", menus.get(0).getPatternId());
- result.put("menuNumber", menus.get(0).getMenuNumber());
- result.put("periodId", menus.get(0).getPeriodId());
- result.put("maxCount", menus.get(0).getMaxCount());
- List<CuisineListResp> registers = new ArrayList<>();
- Integer limit = Integer.valueOf(sysConfigService.selectConfigByKey("app.canteen.limit"));
- if (limit == 1) {
- //判断限制
- ConsumeMaintain consumeMaintain = new ConsumeMaintain();
- consumeMaintain.setMenuNumber(menus.get(0).getMenuNumber());
- List<ConsumeMaintain> cons = new ArrayList<>();
- cons = consumeMaintainService.selectConsumeMaintainList(consumeMaintain);
- if (cons.size() > 0) {//有限制
- consumeMaintain = cons.get(0);
- String begin = DateUtils.parseDateToStr("yyyy-MM-dd", consumeMaintain.getSendTime()) + " " + consumeMaintain.getBeginDate() + ":00";
- String end = DateUtils.parseDateToStr("yyyy-MM-dd", consumeMaintain.getSendTime()) + " " + consumeMaintain.getEndDate() + ":00";
- if (DateUtil.isIn(new Date(), DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", begin), DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", end))) {
- HsCanteenMenuRegister register = new HsCanteenMenuRegister();
- register.setMenuNumber(menus.get(0).getMenuNumber());
- registers = hsCanteenMenuRegisterService.selectCuisineList(register, 0, 0);
- } else {
- return AjaxResult.error("菜单不在可选时间内");
- }
- } else {
- return AjaxResult.error("菜单未维护限制时间");
- }
- } else {
- HsCanteenMenuRegister register = new HsCanteenMenuRegister();
- register.setMenuNumber(menus.get(0).getMenuNumber());
- registers = hsCanteenMenuRegisterService.selectCuisineList(register, 0, 0);
- }
- // Integer maximum = Integer.valueOf(sysConfigService.selectConfigByKey("app.canteen.maximum"));
- // registers = registers.stream().map(item -> {
- //// if (item.getCuisinePicture() != null) {
- //// item.setCuisinePicture("http://" + getIp() + item.getCuisinePicture());
- //// }
- // //设置菜品最大数量
- // item.setMaximum(maximum);
- // return item;
- // }).collect(Collectors.toList());
- result.put("registers", registers);
- return AjaxResult.success(result);
- }
- return AjaxResult.error("菜单不存在");
- }
- /**
- * 查询菜品
- *
- * @param appGetCuisinesReq
- * @return
- */
- @ApiOperation("获取菜品2")
- @RequestMapping("/getCuisines")
- @ResponseBody
- public AjaxResult getMenuCuisinesLimit(@RequestBody AppGetCuisinesReq appGetCuisinesReq) {
- List<Map<String, Object>> resp = new ArrayList<>();
- //根据当前日期查找符合要求菜单
- ConsumeMaintain consumeMaintain = new ConsumeMaintain();
- consumeMaintain.setOrganizationCode(appGetCuisinesReq.getJgid());
- List<ConsumeMaintain> cons = new ArrayList<>();
- cons = consumeMaintainService.selectConsumeMaintainList(consumeMaintain);
- cons = cons.stream().filter(o ->
- DateUtil.isIn(new Date(),
- DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", DateUtils.parseDateToStr("yyyy-MM-dd", o.getSendTime()) + " " + o.getBeginDate() + ":00"),
- DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", DateUtils.parseDateToStr("yyyy-MM-dd", o.getSendTime()) + " " + o.getEndDate() + ":00")
- )
- ).collect(Collectors.toList());
- List<String> nums = cons.stream().map(ConsumeMaintain::getMenuNumber).collect(Collectors.toList());
- if (nums.size() == 0) {
- return AjaxResult.error("当前时间无内容");
- }
- List<HsCanteenMenu> menus = hsCanteenMenuService.selectAppMenuList(nums, appGetCuisinesReq.getJgid());
- menus = menus.stream().filter(o ->
- Arrays.asList(o.getConsumerType().split(",")).contains(String.valueOf(appGetCuisinesReq.getConsumerType())))
- .collect(Collectors.toList());
- if (menus.size() == 0) {
- return AjaxResult.error("不存在符合条件菜单");
- }
- menus.stream().forEach(o -> {
- Map<String, Object> result = new HashMap<>();
- result.put("patternId", o.getPatternId());
- result.put("menuNumber", o.getMenuNumber());
- result.put("periodId", o.getPeriodId());
- result.put("menuName", o.getMenuName());
- result.put("useDate", o.getUseDate());
- result.put("jgid", o.getJgid());
- result.put("maxCount", o.getMaxCount());
- HsCanteenMenuRegister register = new HsCanteenMenuRegister();
- register.setMenuNumber(o.getMenuNumber());
- register.setJgid(o.getJgid());
- List<CuisineListResp> registers = hsCanteenMenuRegisterService.selectCuisineList(register, 0, 0);
- // if (registers.size() > 0) {
- // Integer maximum = Integer.valueOf(sysConfigService.selectConfigByKey("app.canteen.maximum"));
- // registers = registers.stream().map(item -> {
- // item.setMaximum(maximum);
- // return item;
- // }).collect(Collectors.toList());
- result.put("registers", registers);
- resp.add(result);
- // }
- });
- return AjaxResult.success(resp);
- }
- /**
- * 下单
- *
- * @param appOrderPaymentReq
- * @return
- */
- @RequestMapping("/order")
- @ResponseBody
- @Transactional(rollbackFor = Exception.class)
- public AjaxResult orderPayment(@RequestBody AppOrderPaymentReq appOrderPaymentReq) {
- HsCanteenOrder hsCanteenOrder = new HsCanteenOrder();//订单
- Integral integral = new Integral();//消费记录
- //验证订单唯一性
- List<HsCanteenOrder> existOrders = new ArrayList<>();
- HsCanteenOrder existOrder = new HsCanteenOrder();
- existOrder.setUserNumber(appOrderPaymentReq.getUserNumber());
- existOrder.setMenuNumber(appOrderPaymentReq.getMenuNumber());
- existOrder.setJgid(appOrderPaymentReq.getJgid());
- existOrders = hsCanteenOrderService.selectHsCanteenOrderList(existOrder);
- existOrders = existOrders.stream().filter(o -> o.getZfbz() != 1).collect(Collectors.toList());
- if (existOrders.size() > 0) {
- return AjaxResult.error("用户已有此餐订单");
- }
- //验证用户
- SysUserOrganization user = new SysUserOrganization();
- user.setLoginName(appOrderPaymentReq.getUserNumber());
- user.setOrganizationCode(appOrderPaymentReq.getJgid());
- List<SysUserOrganization> userList = sysUserOrganizationService.selectSysUserOrganizationList(user);
- if (userList.size() == 0) {
- return AjaxResult.error("用户信息不存在");
- }
- user = userList.get(0);
- //生成消费记录
- integral.setId(IdWorker.getIdStr());//积分主键
- integral.setRechargeEquipmentCode(appOrderPaymentReq.getDeviceNumber());//设备编号
- integral.setRechargeEquipmentName(appOrderPaymentReq.getDeviceName());//设备名称
- integral.setLoginName(appOrderPaymentReq.getUserNumber());//账号编号
- integral.setRechargeTime(appOrderPaymentReq.getPaytime());//支付时间
- integral.setRechargeIntegral(appOrderPaymentReq.getOrderTotal().negate());//积分(负数)
- integral.setIsDelete(0);//有效标志
- integral.setNickName(user.getNickName());
- integral.setOrganizationCode(appOrderPaymentReq.getJgid());//机构代码
- if (appOrderPaymentReq.getPatternId() == PartternIdEnum.RESERVE.getValue()) {//预定消费模式扣减积分
- if (user.getIntegral().compareTo(appOrderPaymentReq.getOrderTotal()) < 0) {
- return AjaxResult.error("账户积分不足");
- }
- //扣减积分
- user.setIntegral(user.getIntegral().subtract(appOrderPaymentReq.getOrderTotal()));
- //消费标志
- hsCanteenOrder.setConsumeSign(0);
- integral.setMoneyType(Integer.valueOf(ConsumeChangeEnum.ONLINECONSUME.getValue()));//消费
- } else {
- if (user.getQuota().compareTo(appOrderPaymentReq.getOrderTotal()) < 0) {
- return AjaxResult.error("记账额度不足");
- }
- //扣减积分
- user.setQuota(user.getQuota().subtract(appOrderPaymentReq.getOrderTotal()));
- //记账标志
- hsCanteenOrder.setConsumeSign(1);
- integral.setMoneyType(Integer.valueOf(ConsumeChangeEnum.ONLINEBOOKING.getValue()));//消费
- }
- //订单
- BeanUtils.copyBeanProp(hsCanteenOrder, appOrderPaymentReq);
- //获取id
- hsCanteenOrder.setOrderId(IdWorker.getIdStr());
- //获取订单编码
- NumberRuleReq numberRuleReq = new NumberRuleReq();
- numberRuleReq.setRuleId(NumberRuleEnum.ORDER.getValue());
- numberRuleReq.setInput(String.valueOf(DateUtil.year(appOrderPaymentReq.getPaytime())).substring(2, 4));
- String number = hsSysNumberRuleService.getNumber(numberRuleReq);
- hsCanteenOrder.setOrderNumber(number);
- //订单详情
- if (appOrderPaymentReq.getDetails() == null) {
- return AjaxResult.error("订单明细不能为空");
- }
- appOrderPaymentReq.getDetails().stream().forEach(o -> {
- o.setDetailId(IdWorker.getIdStr());
- o.setOrderNumber(hsCanteenOrder.getOrderNumber());
- });
- try {
- WxMsgTemplateTakeFood wxMsgTemplateTakeFood = new WxMsgTemplateTakeFood();
- wxMsgTemplateTakeFood.setPhrase14(wxUtils.getFormat("待取餐"));
- wxMsgTemplateTakeFood.setTime8(wxUtils.getFormat(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", appOrderPaymentReq.getPaytime())));
- StringBuilder de = new StringBuilder();
- for (HsCanteenOrderDetail detail : appOrderPaymentReq.getDetails()) {
- de.append("【").append(detail.getCuisineName()).append("】");
- }
- wxMsgTemplateTakeFood.setThing16(wxUtils.getFormat(de.toString()));
- wxMsgTemplateTakeFood.setAmount11(wxUtils.getFormat(String.valueOf(appOrderPaymentReq.getOrderTotal())));
- wxMsgService.sendQRCodeMsg(appOrderPaymentReq.getUserNumber(), wxMsgTemplateTakeFood, WxTemplateKeyEnum.TAKE_FOOD, true);
- sysUserOrganizationService.updateById(user);//更新账户信息
- hsCanteenOrderService.save(hsCanteenOrder);//订单主表
- hsCanteenOrderDetailService.saveBatch(appOrderPaymentReq.getDetails());//订单明细
- integral.setOrderNumber(hsCanteenOrder.getOrderNumber());
- integralService.save(integral);
- } catch (Exception e) {
- e.printStackTrace();
- throw new BaseException("保存失败");
- }
- return AjaxResult.success("保存成功");
- }
- /**
- * 获取用户
- *
- * @param sys
- * @return
- */
- @RequestMapping("/getUser")
- @ResponseBody
- public AjaxResult getUser(@RequestBody AppSysReq sys) {
- SysUser user = new SysUser();
- user.setUserName(sys.getUserName());
- if (StrUtil.isBlank(sys.getOrganizationCode())) {
- return AjaxResult.error("机构代码不能为空");
- }
- user.setOrganizationCode(sys.getOrganizationCode());
- AppUserResp userResp = sysUserService.selectAppUserList(user);
- if (userResp == null) {
- return AjaxResult.error("暂未绑定机构或绑定已到期");
- }
- // if (StrUtil.isNotBlank(user.getAvatar())) {
- // user.setAvatar("http://" + getIp() + user.getAvatar());
- // }
- return AjaxResult.success(userResp);
- }
- /**
- * 获取订单信息
- *
- * @param sys
- * @return
- */
- @RequestMapping("/getOrder")
- @ResponseBody
- public TableDataInfo getOrder(@RequestBody AppSysReq sys) {
- startPage();
- List<HsCanteenOrder> orders = new ArrayList<>();
- HsCanteenOrder order = new HsCanteenOrder();
- order.setUserNumber(sys.getUserName());
- order.setJgid(sys.getOrganizationCode());
- orders = hsCanteenOrderService.selectHsCanteenOrderList(order);
- orders.sort(Comparator.comparing(HsCanteenOrder::getPaytime).reversed());
- return getDataTable(getPage().setRecords(orders));
- }
- /**
- * 获取订单信息详情
- *
- * @param sys
- * @return
- */
- @RequestMapping("/getOrderDetail")
- @ResponseBody
- public TableDataInfo getOrderDetail(@RequestBody AppSysReq sys) {
- startPage();
- List<HsCanteenOrderDetail> details = new ArrayList<>();
- HsCanteenOrderDetail detail = new HsCanteenOrderDetail();
- detail.setOrderNumber(sys.getOrderNumber());
- detail.setJgid(sys.getOrganizationCode());
- details = hsCanteenOrderDetailService.selectHsCanteenOrderDetailList(detail);
- return getDataTable(details);
- }
- /**
- * 获取充值历史记录
- *
- * @param req
- * @return
- */
- @RequestMapping("/getRecharge")
- @ResponseBody
- public TableDataInfo getRecharge(@RequestBody AppSysReq req) {
- startPage();
- List<Integral> integrals = new ArrayList<>();
- Integral integral = new Integral();
- integral.setLoginName(req.getUserName());
- integral.setOrganizationCode(req.getOrganizationCode());
- integrals = integralService.selectIntegralList(integral);
- int[] typeArr = {1, 2, 3, 4, 5, 6, 7, 8};
- integrals = integrals.stream().filter(o -> ArrayUtil.contains(typeArr, o.getMoneyType())).collect(Collectors.toList());
- return getDataTable(integrals);
- }
- /**
- * 获取用户卡片
- *
- * @param req
- * @return
- */
- @RequestMapping("/getCardInfo")
- @ResponseBody
- public AjaxResult getCardInfo(@RequestBody AppSysReq req) {
- List<SysCardInfo> cardInfos = new ArrayList<>();
- SysCardInfo cardInfo = new SysCardInfo();
- cardInfo.setOrganizationCode(req.getOrganizationCode());
- cardInfo.setUserId(req.getUserName());
- cardInfos = sysCardInfoService.selectSysCardInfoList(cardInfo);
- if (cardInfos.size() > 0) {
- cardInfo = cardInfos.get(0);
- }
- return AjaxResult.success(cardInfo);
- }
- @Resource
- private IHsAppPushService pushService;
- /**
- * 登录接口(token永久有效)
- *
- * @param loginBody
- * @return
- */
- @RequestMapping("/login")
- @ResponseBody
- public AjaxResult login(@RequestBody AppLoginReq loginBody) {
- AjaxResult ajax = AjaxResult.success();
- if (loginBody.getLoginType().equals("1")) {
- SysUser info = userService.getUserByPhone(loginBody.getUsername());
- if (info == null) {
- return AjaxResult.error("用户信息不存在");
- }
- loginBody.setUsername(info.getUserName());
- }
- loginService.appLogin(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
- loginBody.getUuid(), ajax);
- return ajax;
- }
- /**
- * app退单接口
- *
- * @param orderNumber
- * @return
- */
- @RequestMapping("/back")
- @ResponseBody
- @Transactional(rollbackFor = Exception.class)
- public AjaxResult back(String orderNumber) {
- HsCanteenOrder order = new HsCanteenOrder();
- order.setOrderNumber(orderNumber);
- List<HsCanteenOrder> orders;
- orders = hsCanteenOrderService.selectHsCanteenOrderList(order);
- if (orders.size() > 0) {
- order = orders.get(0);
- //判断时间是否在时间内
- ConsumeMaintain consumeMaintain = new ConsumeMaintain();
- consumeMaintain.setMenuNumber(order.getMenuNumber());
- List<ConsumeMaintain> cons = new ArrayList<>();
- cons = consumeMaintainService.selectConsumeMaintainList(consumeMaintain);
- if (cons.size() > 0) {//有限制
- consumeMaintain = cons.get(0);
- String begin = DateUtils.parseDateToStr("yyyy-MM-dd", consumeMaintain.getSendTime()) + " " + consumeMaintain.getBeginDate() + ":00";
- String end = DateUtils.parseDateToStr("yyyy-MM-dd", consumeMaintain.getSendTime()) + " " + consumeMaintain.getEndDate() + ":00";
- if (!DateUtil.isIn(new Date(), DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", begin), DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", end))) {
- return AjaxResult.error("订单已过可退时间,请联系管理员");
- }
- }
- //处理订单信息
- if (order.getZfbz() == 1) {
- return AjaxResult.error("该订单已作废,不可重复作废");
- }
- try {
- SysUserOrganization user = new SysUserOrganization();
- user.setLoginName(order.getUserNumber());
- user.setOrganizationCode(order.getJgid());
- List<SysUserOrganization> userList = sysUserOrganizationService.selectSysUserOrganizationList(user);
- if (userList.size() == 0) {
- return AjaxResult.error("用户信息不存在");
- }
- user = userList.get(0);
- //生成作废消费记录
- Integral integral = new Integral();
- integral.setId(IdWorker.getIdStr());//积分主键
- integral.setMoneyType(Integer.valueOf(ConsumeChangeEnum.REFUND.getValue()));//退还
- integral.setRechargeEquipmentCode(order.getDeviceNumber());//设备编号
- integral.setRechargeEquipmentName(order.getDeviceName());//设备名称
- integral.setLoginName(order.getUserNumber());//账号编号
- integral.setRechargeTime(new Date());//作废时间
- integral.setRechargeIntegral(order.getOrderTotal());//积分
- integral.setIsDelete(0);//有效标志
- integral.setNickName(user.getNickName());
- integral.setOrganizationCode(order.getJgid());//机构代码
- integral.setOrderNumber(order.getOrderNumber());
- //更新余额
- if (order.getConsumeSign() == 0) {
- //扣减积分
- user.setIntegral(user.getIntegral().add(order.getOrderTotal()));
- } else {
- user.setQuota(user.getQuota().add(order.getOrderTotal()));
- }
- //订单状态
- order.setZfbz(1);
- order.setZfsj(new Date());
- //update
- hsCanteenOrderService.updateById(order);
- integralService.save(integral);
- sysUserOrganizationService.updateById(user);
- } catch (Exception e) {
- throw new BaseException("作废失败");
- }
- return AjaxResult.success("作废成功");
- }
- return AjaxResult.error("订单信息不存在");
- }
- /**
- * app获取用户机构
- *
- * @return
- */
- @RequestMapping("/getOrganization")
- @ResponseBody
- public AjaxResult getOrganizationByUserName(@RequestBody AppSysReq req) {
- List<OrganizationListResp> resp = sysUserOrganizationService.getOrganizationByUserName(req.getUserName());
- return AjaxResult.success(resp);
- }
- @RequestMapping("/add")
- @ResponseBody
- public AjaxResult add(@RequestBody SysUser user) {
- // if (StringUtils.isNotEmpty(user.getPhonenumber())
- // && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
- // return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
- // } else if (StringUtils.isNotEmpty(user.getEmail())
- // && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
- // return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
- // }
- user.setCreateBy("app");
- user.setUserType("1");
- user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
- HsOrgPersonnelFiles opf = new HsOrgPersonnelFiles();
- opf.setUserCode(user.getUserName());
- opf.setPhone(user.getPhonenumber());
- opf.setOrgCode("G00000007");
- orgPersonnelFilesService.save(opf);
- return AjaxResult.success(userService.insertUser(user));
- }
- @RequestMapping("/getPlace")
- @ResponseBody
- public AjaxResult getPlace(@RequestBody AppSysReq req) {
- HsCanteenDiningPlace place = new HsCanteenDiningPlace();
- List<HsCanteenDiningPlace> list;
- place.setJgid(req.getOrganizationCode());
- place.setPlaceType(PlaceEnum.CANTEEN.getValue());
- place.setParentId(null);
- list = hsCanteenDiningPlaceService.selectHsCanteenDiningPlaceList(place);
- List<Long> ids = list.stream().map(HsCanteenDiningPlace::getParentId).collect(Collectors.toList());
- list = list.stream().filter(o -> !ids.contains(o.getId())).collect(Collectors.toList());
- return AjaxResult.success(list);
- }
- /**
- * 积分商城礼品列表
- *
- * @param req
- * @return
- */
- @RequestMapping("/getGift")
- @ResponseBody
- public AjaxResult getGift(@RequestBody AppSysReq req) {
- HsGift hsGift = new HsGift();
- hsGift.setJgid(req.getOrganizationCode());
- List<HsGift> gifts = hsGiftService.selectHsGiftList(hsGift);
- return AjaxResult.success(gifts);
- }
- /**
- * 积分商城下单
- *
- * @param req
- * @return
- */
- @Transactional(rollbackFor = Exception.class)
- @RequestMapping("giftOrder")
- @ResponseBody
- public AjaxResult giftOrder(@RequestBody GiftCustomPayReq req) {
- //验证用户
- SysUserOrganization user = new SysUserOrganization();
- user.setLoginName(req.getUserNumber());
- user.setOrganizationCode(req.getJgid());
- List<SysUserOrganization> userList = sysUserOrganizationService.selectSysUserOrganizationList(user);
- if (userList.size() == 0) {
- return AjaxResult.error("用户信息不存在");
- }
- user = userList.get(0);
- if (user.getIntegral().compareTo(req.getOrderTotal()) < 0) {
- return AjaxResult.error("账户积分不足");
- }
- //扣减积分
- user.setIntegral(user.getIntegral().subtract(req.getOrderTotal()));
- //生成消费记录
- Integral integral = new Integral();
- integral.setId(IdWorker.getIdStr());//积分主键
- integral.setRechargeEquipmentCode(req.getDeviceNumber());//设备编号
- integral.setRechargeEquipmentName(req.getDeviceName());//设备名称
- integral.setLoginName(req.getUserNumber());//账号编号
- integral.setRechargeTime(new Date());//支付时间
- integral.setRechargeIntegral(req.getOrderTotal().negate());//积分(负数)
- integral.setIsDelete(0);//有效标志
- integral.setNickName(user.getNickName());
- integral.setOrganizationCode(req.getJgid());//机构代码
- integral.setMoneyType(Integer.valueOf(ConsumeChangeEnum.Gift.getValue()));
- //消费标志
- HsCanteenOrder hsCanteenOrder = new HsCanteenOrder();
- hsCanteenOrder.setConsumeSign(0);
- //订单
- BeanUtils.copyBeanProp(hsCanteenOrder, req);
- //获取id
- hsCanteenOrder.setOrderId(IdWorker.getIdStr());
- hsCanteenOrder.setPaytime(integral.getRechargeTime());
- //获取订单编码
- NumberRuleReq numberRuleReq = new NumberRuleReq();
- numberRuleReq.setRuleId(NumberRuleEnum.ORDER.getValue());
- numberRuleReq.setInput(String.valueOf(DateUtil.year(hsCanteenOrder.getPaytime())).substring(2, 4));
- String number = hsSysNumberRuleService.getNumber(numberRuleReq);
- hsCanteenOrder.setOrderNumber(number);
- //订单详情
- if (req.getHsGifts() == null) {
- return AjaxResult.error("订单明细不能为空");
- }
- List<HsGift> hsGifts = new ArrayList<>();
- for (HsCanteenOrderDetail o : req.getHsGifts()) {
- HsGift gift = new HsGift();
- gift.setGiftNumber(o.getCuisineNumber());
- gift.setJgid(o.getJgid());
- List<HsGift> temp = hsGiftService.selectHsGiftList(gift);
- if (CollectionUtil.isEmpty(temp)) {
- return AjaxResult.error(o.getCuisineName() + "礼品不存在");
- }
- gift = temp.get(0);
- if (gift.getAmount() < o.getAmount()) {
- return AjaxResult.error(o.getCuisineName() + "数量不足");
- }
- gift.setAmount(gift.getAmount() - o.getAmount());
- hsGifts.add(gift);
- o.setDetailId(IdWorker.getIdStr());
- o.setOrderNumber(hsCanteenOrder.getOrderNumber());
- }
- try {
- sysUserOrganizationService.updateById(user);//更新账户信息
- hsCanteenOrderService.save(hsCanteenOrder);//订单主表
- hsCanteenOrderDetailService.saveBatch(req.getHsGifts());//订单明细
- integral.setOrderNumber(hsCanteenOrder.getOrderNumber());
- integralService.save(integral);
- hsGiftService.updateBatchById(hsGifts);
- } catch (Exception e) {
- e.printStackTrace();
- throw new BaseException("保存失败");
- }
- return AjaxResult.success();
- }
- /**
- * 获取通知公告
- *
- * @param orgNo 机构编号
- * @return
- */
- @GetMapping("/notice")
- public AjaxResult appNoticeList(@RequestParam String orgNo) {
- return AjaxResult.success(noticeService.selectNoticeList(null));
- }
- @Resource
- private IHsOrgPersonnelFilesService orgPersonnelFilesService;
- }
|