Commit ff324a3a by giaogiao

包名修改. 日志修改

parent c307c58c
...@@ -39,9 +39,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; ...@@ -39,9 +39,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement @EnableTransactionManagement
@EnableConfigurationProperties @EnableConfigurationProperties
@ServletComponentScan @ServletComponentScan
@ConfigurationPropertiesScan("com.sien.common.config") @ConfigurationPropertiesScan("com.wecloud.im.config")
@MapperScan({"io.geekidea.springbootplus.**.mapper", "com.sien.**.mapper"}) @MapperScan({"io.geekidea.springbootplus.**.mapper", "com.wecloud.**.mapper"})
@SpringBootApplication(scanBasePackages = {"io.geekidea.springbootplus", "com.sien", "com.sien.common", "com.sien.common.config"}) @SpringBootApplication(scanBasePackages = {"io.geekidea.springbootplus", "com.wecloud", "com.wecloud.im", "com.wecloud.im.config"})
public class SpringBootPlusApplication { public class SpringBootPlusApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
package io.geekidea.springbootplus; package io.geekidea.springbootplus;
import com.sien.common.tillo.netty.core.NettyStart; import com.wecloud.im.tillo.netty.core.NettyStart;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
package io.geekidea.springbootplus.config; package io.geekidea.springbootplus.config;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.sien.common.interceptor.DownloadInterceptor; import com.wecloud.im.interceptor.DownloadInterceptor;
import com.sien.common.interceptor.ResourceInterceptor; import com.wecloud.im.interceptor.ResourceInterceptor;
import com.sien.common.interceptor.UploadInterceptor; import com.wecloud.im.interceptor.UploadInterceptor;
import io.geekidea.springbootplus.config.properties.SpringBootPlusFilterProperties; import io.geekidea.springbootplus.config.properties.SpringBootPlusFilterProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusInterceptorProperties; import io.geekidea.springbootplus.config.properties.SpringBootPlusInterceptorProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties; import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties;
......
...@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.handler; ...@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.handler;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.auth0.jwt.exceptions.JWTDecodeException; import com.auth0.jwt.exceptions.JWTDecodeException;
import com.sien.common.exception.SysLoginException; import com.wecloud.im.exception.SysLoginException;
import com.sien.common.exception.VerificationCodeException; import com.wecloud.im.exception.VerificationCodeException;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.exception.BusinessException; import io.geekidea.springbootplus.framework.common.exception.BusinessException;
......
package io.geekidea.springbootplus.test; package io.geekidea.springbootplus.test;
import com.sien.common.factory.PushFactory; import com.wecloud.im.factory.PushFactory;
import com.sien.common.service.DonationRecordService; import com.wecloud.im.service.DonationRecordService;
import com.sien.common.vo.DonationRankAndTotal; import com.wecloud.im.vo.DonationRankAndTotal;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo; import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
......
package com.sien.common.controller;
import com.sien.common.service.AppSmsService;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* APP用户 控制器
*
* @author wei
* @since 2020-09-23
*/
@Slf4j
@RestController
@Api(value = "短信验证码", tags = {"APP短信验证码相关"})
@RequestMapping("/sms")
public class AppSmsController extends BaseController {
@Autowired
private AppSmsService appSmsService;
/**
* 获取注册验证码
*/
@GetMapping("/registerOrLoginCode")
@OperationLog(name = "获取注册或登陆的验证码", type = OperationLogType.INFO)
@ApiOperation(value = "获取注册或登陆的验证码", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> registerOrLoginCode(@RequestParam String phoneArea, @RequestParam String phone) throws Exception {
return appSmsService.registerOrLoginCode(phoneArea, phone);
}
/**
* 修改手机号,向旧手机号发验证码
*/
@GetMapping("/updatePhoneCode")
@OperationLog(name = "修改手机号,向旧手机号发验证码", type = OperationLogType.INFO)
@ApiOperation(value = "向旧手机号发验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> updatePhoneCode() throws Exception {
return appSmsService.updatePhoneCodeSendToOld();
}
/**
* 修改手机号,向旧手机号发验证码
*/
@GetMapping("/updatePhoneCodeToNew")
@OperationLog(name = "修改手机号,向新手机号发验证码", type = OperationLogType.INFO)
@ApiOperation(value = "向新手机号发验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> updatePhoneCodeSendToNew(@RequestParam String phoneArea, @RequestParam String phone) throws Exception {
return appSmsService.updatePhoneCodeSendToNew(phoneArea, phone);
}
/**
* 校验旧手机验证码
*/
@GetMapping("/checkPhoneCodeOld")
@OperationLog(name = "校验旧手机验证码", type = OperationLogType.INFO)
@ApiOperation(value = "校验旧手机验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Boolean> checkPhoneCodeOld(@RequestParam String code) throws Exception {
return appSmsService.checkPhoneCodeOld(code);
}
}
package com.sien.common.controller;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.AppUserInfoParam;
import com.sien.common.param.app.AppUserPhoneUpdateParam;
import com.sien.common.service.AppUserApiService;
import com.sien.common.service.AppUserService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.vo.app.MyInfoVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* APP用户 控制器
*
* @author wei
* @since 2020-09-23
*/
@Slf4j
@RestController
@Module("api-app")
@Api(value = "用户API", tags = {"APP用户相关"})
@RequestMapping("/user")
public class AppUserController extends BaseController {
@Autowired
private AppUserService appUserService;
@Autowired
private AppUserApiService appUserApiService;
/**
* 获取自己的信息详情
*/
@GetMapping("/myInfo/")
@OperationLog(name = "APP用户详情", type = OperationLogType.INFO)
@ApiOperation(value = "获取APP用户详情", response = AppUserQueryVo.class)
public ApiResult<MyInfoVo> getAppUser() throws Exception {
MyInfoVo appUserQueryVo = appUserService.getMyInfo();
return ApiResult.ok(appUserQueryVo);
}
@PostMapping("/registerOrLogin")
@Validated
@ApiOperation(value = "手机号注册+登陆", notes = "app用户注册+登陆", response = LoginAppUserTokenVo.class)
public ApiResult<LoginAppUserTokenVo> registerOrLogin(@Validated @RequestBody AppSmsRegisterParam appSmsRegisterParam, @RequestHeader(required = false) String language) throws Exception {
return appUserApiService.register(appSmsRegisterParam, language);
}
/**
* 补充或修改APP用户信息
*/
@PostMapping("/updateAppUserInfo")
@OperationLog(name = "补充或修改APP用户信息", type = OperationLogType.ADD)
@ApiOperation(value = "补充或修改APP用户信息", notes = "不需要修改的字段传入null或直接不传入该字段,如果传入空双引号的话会将数据置为空 ", response = ApiResult.class)
public ApiResult<Boolean> updateAppUserInfo(@RequestBody AppUserInfoParam appUserInfoParam) throws Exception {
boolean flag = appUserApiService.updateAppUser(appUserInfoParam);
return ApiResult.result(flag);
}
/**
* 修改手机号
*/
@PostMapping("/updatePhone")
@OperationLog(name = "修改手机号", type = OperationLogType.ADD)
@ApiOperation(value = "修改手机号", response = ApiResult.class)
public ApiResult<Boolean> updatePhone(@RequestBody AppUserPhoneUpdateParam userPhoneUpdateParam) throws Exception {
return appUserApiService.updatePhone(userPhoneUpdateParam.getPhoneArea(), userPhoneUpdateParam.getPhone(), userPhoneUpdateParam.getCode(), userPhoneUpdateParam.getCodeNew());
}
// @GetMapping("/userInfoList")
// @ApiOperation(value = "批量获取用户信息")
// public ApiResult<List<AppUser>> getUserInfoList(@RequestParam("uids") Set<Long> uids) {
// return appUserApiService.getAppUserList(uids);
// }
/**
* APP用户分页列表
*//*
@PostMapping("/getPageList")
@OperationLog(name = "APP用户分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "APP用户分页列表", response = AppUserQueryVo.class)
@RequiresRoles("sys:admin")
public ApiResult<Paging<AppUserQueryVo>> getAppUserPageList(@Validated @RequestBody AppUserPageParam appUserPageParam) throws Exception {
Paging<AppUserQueryVo> paging = appUserService.getAppUserPageList(appUserPageParam);
return ApiResult.ok(paging);
}*/
// @GetMapping("/userInfo")
// @ApiOperation(value = "根据token获取userInfo", notes = "客服模块调用")
// public AppUser getUserInfo() {
// return appUserApiService.getUserInfo(Long.valueOf(JwtUtil.getUsername(JwtTokenUtil.getToken())));
// }
// /**
// * 添加或修改推送token
// */
// @PostMapping("/addDeviceToken")
// @OperationLog(name = "添加或修改推送token", type = OperationLogType.ADD)
// @ApiOperation(value = "添加或修改推送token", notes = "添加和修改都调用此接口", response = ApiResult.class)
// public ApiResult<Boolean> addDeviceToken(@RequestBody DeviceTokenParam deviceTokenParam) throws Exception {
// boolean flag = appUserService.updateDeviceToken(deviceTokenParam, deviceTokenParam.getDeviceType());
// return ApiResult.result(flag);
// }
/* *//**
* 添加APP用户
*//*
@PostMapping("/add")
@OperationLog(name = "添加APP用户", type = OperationLogType.ADD)
@ApiOperation(value = "添加APP用户", response = ApiResult.class)
@RequiresRoles("sys:admin")
public ApiResult<Boolean> addAppUser(@Validated(Add.class) @RequestBody AppUser appUser) throws Exception {
boolean flag = appUserService.saveAppUser(appUser);
return ApiResult.result(flag);
}
*//**
* 修改APP用户
*//*
@PostMapping("/update")
@OperationLog(name = "修改APP用户", type = OperationLogType.UPDATE)
@ApiOperation(value = "修改APP用户", response = ApiResult.class)
@RequiresRoles("sys:admin")
public ApiResult<Boolean> updateAppUser(@Validated(Update.class) @RequestBody AppUser appUser) throws Exception {
boolean flag = appUserService.updateAppUser(appUser);
return ApiResult.result(flag);
}
*//**
* 删除APP用户
*//*
@PostMapping("/delete/{id}")
@OperationLog(name = "删除APP用户", type = OperationLogType.DELETE)
@ApiOperation(value = "删除APP用户", response = ApiResult.class)
@RequiresRoles("sys:admin")
public ApiResult<Boolean> deleteAppUser(@PathVariable("id") Long id) throws Exception {
boolean flag = appUserService.deleteAppUser(id);
return ApiResult.result(flag);
}
*/
/**
* 获取APP用户详情
*/
/*
@GetMapping("/info/{id}")
@OperationLog(name = "APP用户详情", type = OperationLogType.INFO)
@ApiOperation(value = "APP用户详情", response = AppUserQueryVo.class)
@RequiresRoles("sys:admin")
public ApiResult<AppUserQueryVo> getAppUser(@PathVariable("id") Long id) throws Exception {
AppUserQueryVo appUserQueryVo = appUserService.getAppUserById(id);
return ApiResult.ok(appUserQueryVo);
}
*/
}
package com.sien.common.controller;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.sien.common.param.DonationRecordPageParam;
import com.sien.common.param.app.DonationRecordAdd;
import com.sien.common.service.DonationRecordService;
import com.sien.common.vo.DonationRecordQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 捐款记录 控制器
*
* @author hewei
* @since 2021-02-25
*/
@Slf4j
@RestController
@RequestMapping("/donationRecord")
@Api(value = "捐款记录API", tags = {"捐款记录"})
public class DonationRecordController extends BaseController {
@Autowired
private DonationRecordService donationRecordService;
/**
* 添加捐款记录
*/
@PostMapping("/add")
@OperationLog(name = "我要捐款", type = OperationLogType.ADD)
@ApiOperation(value = "我要捐款")
public ApiResult<WxPayMpOrderResult> addDonationRecord(@Validated(Add.class) @RequestBody DonationRecordAdd donationRecordAdd) throws Exception {
return donationRecordService.add(donationRecordAdd);
}
/**
* 我的捐款记录分页列表
*/
// @PostMapping("/getMyPageList")
// @OperationLog(name = "我的捐款记录分页列表", type = OperationLogType.PAGE)
// @ApiOperation(value = "我的捐款记录分页列表")
// public ApiResult<List<DonationRecord>> getDonationRecordPageList() throws Exception {
// return donationRecordService.getDonationRecordAllList();
// }
/**
* 我的捐款记录分页列表
*/
@PostMapping("/getMyPageList")
@OperationLog(name = "我的捐款记录分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "我的捐款记录分页列表")
public ApiResult<Paging<DonationRecordQueryVo>> getDonationRecordPageList(@Validated @RequestBody DonationRecordPageParam donationRecordPageParam) throws Exception {
Paging<DonationRecordQueryVo> paging = donationRecordService.getDonationRecordPageList(donationRecordPageParam);
return ApiResult.ok(paging);
}
// /**
// * 获取捐款记录详情
// */
// @GetMapping("/info/{id}")
// @OperationLog(name = "捐款记录详情", type = OperationLogType.INFO)
// @ApiOperation(value = "捐款记录详情")
// public ApiResult<DonationRecordQueryVo> getDonationRecord(@PathVariable("id") Long id)throws Exception{
// DonationRecordQueryVo donationRecordQueryVo = donationRecordService.getDonationRecordById(id);
// return ApiResult.ok(donationRecordQueryVo);
// }
// /**
// * 修改捐款记录
// */
// @PostMapping("/update")
// @OperationLog(name = "修改捐款记录", type = OperationLogType.UPDATE)
// @ApiOperation(value = "修改捐款记录")
// public ApiResult<Boolean> updateDonationRecord(@Validated(Update.class) @RequestBody DonationRecord donationRecord)throws Exception{
// boolean flag= donationRecordService.updateDonationRecord(donationRecord);
// return ApiResult.result(flag);
// }
//
// /**
// * 删除捐款记录
// */
// @PostMapping("/delete/{id}")
// @OperationLog(name = "删除捐款记录", type = OperationLogType.DELETE)
// @ApiOperation(value = "删除捐款记录")
// public ApiResult<Boolean> deleteDonationRecord(@PathVariable("id") Long id)throws Exception{
// boolean flag= donationRecordService.deleteDonationRecord(id);
// return ApiResult.result(flag);
// }
}
package com.sien.common.controller;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.sien.common.param.VipOpenParam;
import com.sien.common.service.VipRecordService;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Vip开通记录 控制器
*
* @author hewei
* @since 2021-02-25
*/
@Slf4j
@RestController
@RequestMapping("/vipRecord")
@Api(value = "Vip开通API", tags = {"Vip开通"})
public class VipRecordController extends BaseController {
@Autowired
private VipRecordService vipRecordService;
/**
* Vip开通
*/
@PostMapping("/open")
@OperationLog(name = "开通Vip", type = OperationLogType.ADD)
@ApiOperation(value = "开通Vip")
public ApiResult<WxPayMpOrderResult> openVip(@Validated(Add.class) @RequestBody VipOpenParam vipOpenParam) throws Exception {
return vipRecordService.openVip(vipOpenParam);
}
// /**
// * 添加Vip开通记录
// */
// @PostMapping("/add")
// @OperationLog(name = "添加Vip开通记录", type = OperationLogType.ADD)
// @ApiOperation(value = "添加Vip开通记录")
// public ApiResult<Boolean> addVipRecord(@Validated(Add.class) @RequestBody VipRecord vipRecord)throws Exception{
// boolean flag= vipRecordService.saveVipRecord(vipRecord);
// return ApiResult.result(flag);
// }
//
// /**
// * 修改Vip开通记录
// */
// @PostMapping("/update")
// @OperationLog(name = "修改Vip开通记录", type = OperationLogType.UPDATE)
// @ApiOperation(value = "修改Vip开通记录")
// public ApiResult<Boolean> updateVipRecord(@Validated(Update.class) @RequestBody VipRecord vipRecord)throws Exception{
// boolean flag= vipRecordService.updateVipRecord(vipRecord);
// return ApiResult.result(flag);
// }
//
// /**
// * 删除Vip开通记录
// */
// @PostMapping("/delete/{id}")
// @OperationLog(name = "删除Vip开通记录", type = OperationLogType.DELETE)
// @ApiOperation(value = "删除Vip开通记录")
// public ApiResult<Boolean> deleteVipRecord(@PathVariable("id") Long id)throws Exception{
// boolean flag= vipRecordService.deleteVipRecord(id);
// return ApiResult.result(flag);
// }
//
// /**
// * 获取Vip开通记录详情
// */
// @GetMapping("/info/{id}")
// @OperationLog(name = "Vip开通记录详情", type = OperationLogType.INFO)
// @ApiOperation(value = "Vip开通记录详情")
// public ApiResult<VipRecordQueryVo> getVipRecord(@PathVariable("id") Long id)throws Exception{
// VipRecordQueryVo vipRecordQueryVo = vipRecordService.getVipRecordById(id);
// return ApiResult.ok(vipRecordQueryVo);
// }
//
// /**
// * Vip开通记录分页列表
// */
// @PostMapping("/getPageList")
// @OperationLog(name = "Vip开通记录分页列表", type = OperationLogType.PAGE)
// @ApiOperation(value = "Vip开通记录分页列表")
// public ApiResult<Paging<VipRecordQueryVo>>getVipRecordPageList(@Validated @RequestBody VipRecordPageParam vipRecordPageParam)throws Exception{
// Paging<VipRecordQueryVo> paging = vipRecordService.getVipRecordPageList(vipRecordPageParam);
// return ApiResult.ok(paging);
// }
}
package com.sien.common.controller;
import com.sien.common.service.AppUserService;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* APP用户 控制器
*
* @author wei
* @since 2020-09-23
*/
@Slf4j
@RestController
@Module("api-app")
@Api(value = "微信登陆相关", tags = {"微信登陆相关"})
@RequestMapping("/wechatUser")
public class WechatUserController extends BaseController {
@Autowired
private AppUserService appUserService;
/**
* 根据微信重定向code查询用户是否绑定
*/
@GetMapping("/check/")
@OperationLog(name = "根据微信重定向code查询用户是否绑定", type = OperationLogType.INFO)
@ApiOperation(value = "根据微信重定向code查询用户是否绑定", notes = "用户每次从微信公众号菜单页跳转,都必须调用此接口,来判断用户是否已经绑定用户," +
" 如果已经绑定就直接返回绑定用户的token,如没有绑定则需要用户进行注册,", response = LoginAppUserTokenVo.class)
public ApiResult<LoginAppUserTokenVo> checkAppUser(@RequestParam("code") String code) throws Exception {
return appUserService.checkWechatUserBinding(code);
}
}
package com.sien.common.controller;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.sien.common.service.DonationRecordService;
import com.sien.common.service.VipRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author Binary Wang
*/
@Api(value = "微信支付", hidden = true)
@RestController
@RequestMapping("/pay")
@AllArgsConstructor
public class WxPayController {
@Autowired
private WxPayService wxService;
@Autowired
private DonationRecordService donationRecordService;
@Autowired
private VipRecordService vipRecordService;
@ApiOperation(value = "捐款支付回调通知处理", hidden = true)
@PostMapping("/notify/donationOrder")
public String parseDonationOrderNotifyResult(@RequestBody String xmlData) throws WxPayException {
return donationRecordService.donationOrderNotifyResult(xmlData);
}
@ApiOperation(value = "会员充值支付回调通知处理", hidden = true)
@PostMapping("/notify/vipOrder")
public String parseVipOrderNotifyResult(@RequestBody String xmlData) throws WxPayException {
return vipRecordService.vipOrderNotifyResult(xmlData);
}
//
// /**
// * <pre>
// * 查询订单(详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2)
// * 该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。
// * 需要调用查询接口的情况:
// * ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知;
// * ◆ 调用支付接口后,返回系统错误或未知交易状态情况;
// * ◆ 调用被扫支付API,返回USERPAYING的状态;
// * ◆ 调用关单或撤销接口API之前,需确认支付状态;
// * 接口地址:https://api.mch.weixin.qq.com/pay/orderquery
// * </pre>
// *
// * @param transactionId 微信订单号
// * @param outTradeNo 商户系统内部的订单号,当没提供transactionId时需要传这个。
// */
// @ApiOperation(value = "查询订单")
// @GetMapping("/queryOrder")
// public WxPayOrderQueryResult queryOrder(@RequestParam(required = false) String transactionId,
// @RequestParam(required = false) String outTradeNo)
// throws WxPayException {
// return this.wxService.queryOrder(transactionId, outTradeNo);
// }
//
// @ApiOperation(value = "查询订单")
// @PostMapping("/queryOrder")
// public WxPayOrderQueryResult queryOrder(@RequestBody WxPayOrderQueryRequest wxPayOrderQueryRequest) throws WxPayException {
// return this.wxService.queryOrder(wxPayOrderQueryRequest);
// }
//
// /**
// * <pre>
// * 关闭订单
// * 应用场景
// * 以下情况需要调用关单接口:
// * 1. 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
// * 2. 系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
// * 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。
// * 接口地址:https://api.mch.weixin.qq.com/pay/closeorder
// * 是否需要证书: 不需要。
// * </pre>
// *
// * @param outTradeNo 商户系统内部的订单号
// */
// @ApiOperation(value = "关闭订单")
// @GetMapping("/closeOrder/{outTradeNo}")
// public WxPayOrderCloseResult closeOrder(@PathVariable String outTradeNo) throws WxPayException {
// return this.wxService.closeOrder(outTradeNo);
// }
//
// @ApiOperation(value = "关闭订单")
// @PostMapping("/closeOrder")
// public WxPayOrderCloseResult closeOrder(@RequestBody WxPayOrderCloseRequest wxPayOrderCloseRequest) throws WxPayException {
// return this.wxService.closeOrder(wxPayOrderCloseRequest);
// }
//
// /**
// * 调用统一下单接口,并组装生成支付所需参数对象.
// *
// * @param request 统一下单请求参数
// * @param <T> 请使用{@link com.github.binarywang.wxpay.bean.order}包下的类
// * @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象
// */
// @ApiOperation(value = "统一下单,并组装所需支付参数")
// @PostMapping("/createOrder")
// public <T> T createOrder(@RequestBody WxPayUnifiedOrderRequest request) throws WxPayException {
// return this.wxService.createOrder(request);
// }
//
// /**
// * 统一下单(详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
// * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"
// * 接口地址:https://api.mch.weixin.qq.com/pay/unifiedorder
// *
// * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
// */
// @ApiOperation(value = "原生的统一下单接口")
// @PostMapping("/unifiedOrder")
// public WxPayUnifiedOrderResult unifiedOrder(@RequestBody WxPayUnifiedOrderRequest request) throws WxPayException {
// return this.wxService.unifiedOrder(request);
// }
//
// /**
// * <pre>
// * 微信支付-申请退款
// * 详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4
// * 接口链接:https://api.mch.weixin.qq.com/secapi/pay/refund
// * </pre>
// *
// * @param request 请求对象
// * @return 退款操作结果
// */
// @ApiOperation(value = "退款")
// @PostMapping("/refund")
// public WxPayRefundResult refund(@RequestBody WxPayRefundRequest request) throws WxPayException {
// return this.wxService.refund(request);
// }
//
// /**
// * <pre>
// * 微信支付-查询退款
// * 应用场景:
// * 提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,
// * 银行卡支付的退款3个工作日后重新查询退款状态。
// * 详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5
// * 接口链接:https://api.mch.weixin.qq.com/pay/refundquery
// * </pre>
// * 以下四个参数四选一
// *
// * @param transactionId 微信订单号
// * @param outTradeNo 商户订单号
// * @param outRefundNo 商户退款单号
// * @param refundId 微信退款单号
// * @return 退款信息
// */
// @ApiOperation(value = "退款查询")
// @GetMapping("/refundQuery")
// public WxPayRefundQueryResult refundQuery(@RequestParam(required = false) String transactionId,
// @RequestParam(required = false) String outTradeNo,
// @RequestParam(required = false) String outRefundNo,
// @RequestParam(required = false) String refundId)
// throws WxPayException {
// return this.wxService.refundQuery(transactionId, outTradeNo, outRefundNo, refundId);
// }
//
// @ApiOperation(value = "退款查询")
// @PostMapping("/refundQuery")
// public WxPayRefundQueryResult refundQuery(@RequestBody WxPayRefundQueryRequest wxPayRefundQueryRequest) throws WxPayException {
// return this.wxService.refundQuery(wxPayRefundQueryRequest);
// }
//
// @ApiOperation(value = "支付回调通知处理")
// @PostMapping("/notify/order")
// public String parseOrderNotifyResult(@RequestBody String xmlData) throws WxPayException {
// final WxPayOrderNotifyResult notifyResult = this.wxService.parseOrderNotifyResult(xmlData);
// // TODO 根据自己业务场景需要构造返回对象
// return WxPayNotifyResponse.success("成功");
// }
//
// @ApiOperation(value = "退款回调通知处理")
// @PostMapping("/notify/refund")
// public String parseRefundNotifyResult(@RequestBody String xmlData) throws WxPayException {
// final WxPayRefundNotifyResult result = this.wxService.parseRefundNotifyResult(xmlData);
// // TODO 根据自己业务场景需要构造返回对象
// return WxPayNotifyResponse.success("成功");
// }
//
// @ApiOperation(value = "扫码支付回调通知处理")
// @PostMapping("/notify/scanpay")
// public String parseScanPayNotifyResult(String xmlData) throws WxPayException {
// final WxScanPayNotifyResult result = this.wxService.parseScanPayNotifyResult(xmlData);
// // TODO 根据自己业务场景需要构造返回对象
// return WxPayNotifyResponse.success("成功");
// }
//
// /**
// * 发送微信红包给个人用户
// * <pre>
// * 文档详见:
// * 发送普通红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3
// * 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
// * 发送裂变红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5&index=4
// * 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack
// * </pre>
// *
// * @param request 请求对象
// */
// @ApiOperation(value = "发送红包")
// @PostMapping("/sendRedpack")
// public WxPaySendRedpackResult sendRedpack(@RequestBody WxPaySendRedpackRequest request) throws WxPayException {
// return this.wxService.getRedpackService().sendRedpack(request);
// }
//
// /**
// * <pre>
// * 查询红包记录
// * 用于商户对已发放的红包进行查询红包的具体信息,可支持普通红包和裂变包。
// * 请求Url https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo
// * 是否需要证书 是(证书及使用说明详见商户证书)
// * 请求方式 POST
// * </pre>
// *
// * @param mchBillNo 商户发放红包的商户订单号,比如10000098201411111234567890
// */
// @ApiOperation(value = "查询红包")
// @GetMapping("/queryRedpack/{mchBillNo}")
// public WxPayRedpackQueryResult queryRedpack(@PathVariable String mchBillNo) throws WxPayException {
// return this.wxService.getRedpackService().queryRedpack(mchBillNo);
// }
//
// /**
// * <pre>
// * 扫码支付模式一生成二维码的方法
// * 二维码中的内容为链接,形式为:
// * weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
// * 其中XXXXX为商户需要填写的内容,商户将该链接生成二维码,如需要打印发布二维码,需要采用此格式。商户可调用第三方库生成二维码图片。
// * 文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
// * </pre>
// *
// * @param productId 产品Id
// * @param logoFile 商户logo图片的文件对象,可以为空
// * @param sideLength 要生成的二维码的边长,如果为空,则取默认值400
// * @return 生成的二维码的字节数组
// */
// public byte[] createScanPayQrcodeMode1(String productId, File logoFile, Integer sideLength) {
// return this.wxService.createScanPayQrcodeMode1(productId, logoFile, sideLength);
// }
//
// /**
// * <pre>
// * 扫码支付模式一生成二维码的方法
// * 二维码中的内容为链接,形式为:
// * weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
// * 其中XXXXX为商户需要填写的内容,商户将该链接生成二维码,如需要打印发布二维码,需要采用此格式。商户可调用第三方库生成二维码图片。
// * 文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
// * </pre>
// *
// * @param productId 产品Id
// * @return 生成的二维码URL连接
// */
// public String createScanPayQrcodeMode1(String productId) {
// return this.wxService.createScanPayQrcodeMode1(productId);
// }
//
// /**
// * <pre>
// * 扫码支付模式二生成二维码的方法
// * 对应链接格式:weixin://wxpay/bizpayurl?sr=XXXXX。请商户调用第三方库将code_url生成二维码图片。
// * 该模式链接较短,生成的二维码打印到结账小票上的识别率较高。
// * 文档详见: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5
// * </pre>
// *
// * @param codeUrl 微信返回的交易会话的二维码链接
// * @param logoFile 商户logo图片的文件对象,可以为空
// * @param sideLength 要生成的二维码的边长,如果为空,则取默认值400
// * @return 生成的二维码的字节数组
// */
// public byte[] createScanPayQrcodeMode2(String codeUrl, File logoFile, Integer sideLength) {
// return this.wxService.createScanPayQrcodeMode2(codeUrl, logoFile, sideLength);
// }
//
// /**
// * <pre>
// * 交易保障
// * 应用场景:
// * 商户在调用微信支付提供的相关接口时,会得到微信支付返回的相关信息以及获得整个接口的响应时间。
// * 为提高整体的服务水平,协助商户一起提高服务质量,微信支付提供了相关接口调用耗时和返回信息的主动上报接口,
// * 微信支付可以根据商户侧上报的数据进一步优化网络部署,完善服务监控,和商户更好的协作为用户提供更好的业务体验。
// * 接口地址: https://api.mch.weixin.qq.com/payitil/report
// * 是否需要证书:不需要
// * </pre>
// */
// @ApiOperation(value = "提交交易保障数据")
// @PostMapping("/report")
// public void report(@RequestBody WxPayReportRequest request) throws WxPayException {
// this.wxService.report(request);
// }
//
// /**
// * <pre>
// * 下载对账单
// * 商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。
// * 注意:
// * 1、微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致,bill_type为REVOKED;
// * 2、微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;
// * 3、对账单中涉及金额的字段单位为“元”。
// * 4、对账单接口只能下载三个月以内的账单。
// * 接口链接:https://api.mch.weixin.qq.com/pay/downloadbill
// * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_6">下载对账单</a>
// * </pre>
// *
// * @param billDate 对账单日期 bill_date 下载对账单的日期,格式:20140603
// * @param billType 账单类型 bill_type ALL,返回当日所有订单信息,默认值,SUCCESS,返回当日成功支付的订单,REFUND,返回当日退款订单
// * @param tarType 压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。
// * @param deviceInfo 设备号 device_info 非必传参数,终端设备号
// * @return 保存到本地的临时文件
// */
// @ApiOperation(value = "下载对账单")
// @GetMapping("/downloadBill/{billDate}/{billType}/{tarType}/{deviceInfo}")
// public WxPayBillResult downloadBill(@PathVariable String billDate, @PathVariable String billType,
// @PathVariable String tarType, @PathVariable String deviceInfo) throws WxPayException {
// return this.wxService.downloadBill(billDate, billType, tarType, deviceInfo);
// }
//
// @ApiOperation(value = "下载对账单")
// @PostMapping("/downloadBill")
// public WxPayBillResult downloadBill(WxPayDownloadBillRequest wxPayDownloadBillRequest) throws WxPayException {
// return this.wxService.downloadBill(wxPayDownloadBillRequest);
// }
//
// /**
// * <pre>
// * 提交刷卡支付
// * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1
// * 应用场景:
// * 收银员使用扫码设备读取微信用户刷卡授权码以后,二维码或条码信息传送至商户收银台,由商户收银台或者商户后台调用该接口发起支付。
// * 提醒1:提交支付请求后微信会同步返回支付结果。当返回结果为“系统错误”时,商户系统等待5秒后调用【查询订单API】,查询支付实际交易结果;当返回结果为“USERPAYING”时,商户系统可设置间隔时间(建议10秒)重新查询支付结果,直到支付成功或超时(建议30秒);
// * 提醒2:在调用查询接口返回后,如果交易状况不明晰,请调用【撤销订单API】,此时如果交易失败则关闭订单,该单不能再支付成功;如果交易成功,则将扣款退回到用户账户。当撤销无返回或错误时,请再次调用。注意:请勿扣款后立即调用【撤销订单API】,建议至少15秒后再调用。撤销订单API需要双向证书。
// * 接口地址: https://api.mch.weixin.qq.com/pay/micropay
// * 是否需要证书:不需要。
// * </pre>
// */
// @ApiOperation(value = "提交刷卡支付")
// @PostMapping("/micropay")
// public WxPayMicropayResult micropay(@RequestBody WxPayMicropayRequest request) throws WxPayException {
// return this.wxService.micropay(request);
// }
//
// /**
// * <pre>
// * 撤销订单API
// * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_11&index=3
// * 应用场景:
// * 支付交易返回失败或支付系统超时,调用该接口撤销交易。如果此订单用户支付失败,微信支付系统会将此订单关闭;如果用户支付成功,微信支付系统会将此订单资金退还给用户。
// * 注意:7天以内的交易单可调用撤销,其他正常支付的单如需实现相同功能请调用申请退款API。提交支付交易后调用【查询订单API】,没有明确的支付结果再调用【撤销订单API】。
// * 调用支付接口后请勿立即调用撤销订单API,建议支付后至少15s后再调用撤销订单接口。
// * 接口链接 :https://api.mch.weixin.qq.com/secapi/pay/reverse
// * 是否需要证书:请求需要双向证书。
// * </pre>
// */
// @ApiOperation(value = "撤销订单")
// @PostMapping("/reverseOrder")
// public WxPayOrderReverseResult reverseOrder(@RequestBody WxPayOrderReverseRequest request) throws WxPayException {
// return this.wxService.reverseOrder(request);
// }
//
// @ApiOperation(value = "获取沙箱环境签名key")
// @GetMapping("/getSandboxSignKey")
// public String getSandboxSignKey() throws WxPayException {
// return this.wxService.getSandboxSignKey();
// }
//
// @ApiOperation(value = "发放代金券")
// @PostMapping("/sendCoupon")
// public WxPayCouponSendResult sendCoupon(@RequestBody WxPayCouponSendRequest request) throws WxPayException {
// return this.wxService.sendCoupon(request);
// }
//
// @ApiOperation(value = "查询代金券批次")
// @PostMapping("/queryCouponStock")
// public WxPayCouponStockQueryResult queryCouponStock(@RequestBody WxPayCouponStockQueryRequest request) throws WxPayException {
// return this.wxService.queryCouponStock(request);
// }
//
// @ApiOperation(value = "查询代金券信息")
// @PostMapping("/queryCouponInfo")
// public WxPayCouponInfoQueryResult queryCouponInfo(@RequestBody WxPayCouponInfoQueryRequest request) throws WxPayException {
// return this.wxService.queryCouponInfo(request);
// }
//
// @ApiOperation(value = "拉取订单评价数据")
// @PostMapping("/queryComment")
// public String queryComment(Date beginDate, Date endDate, Integer offset, Integer limit) throws WxPayException {
// return this.wxService.queryComment(beginDate, endDate, offset, limit);
// }
}
package com.sien.common.service;
import com.sien.common.entity.AppUser;
import com.sien.common.param.AppUserPageParam;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.DeviceTokenParam;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.vo.app.MyInfoVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import me.chanjar.weixin.common.error.WxErrorException;
;
/**
* APP用户 服务类
*
* @author wei
* @since 2020-09-23
*/
public interface AppUserService extends BaseService<AppUser> {
/**
* 根据手机号判断用户是否存在
* @param phoneArea
* @param phone
* @return
*/
boolean hasUserByPhoneNumer(String phoneArea,String phone);
// /**
// * 注册
// *
// * @param appSmsRegisterParam
// * @param language
// * @return
// */
// ApiResult<LoginAppUserTokenVo> register(AppSmsRegisterParam appSmsRegisterParam, String language);
/**
* 登陆
*
* @param loginParam
* @param language
* @return
*/
ApiResult<LoginAppUserTokenVo> login(AppSmsRegisterParam loginParam, String language,Boolean hasRegister);
/**
* 保存
*
* @param appUser
* @return
* @throws Exception
*/
boolean saveAppUser(AppUser appUser) throws Exception;
/**
* 修改
*
* @param appUser
* @return
* @throws Exception
*/
boolean updateAppUser(AppUser appUser) throws Exception;
/**
* 添加或修改推送token
*
* @param deviceTokenParam
* @param deviceType
* @return
* @throws Exception
*/
boolean updateDeviceToken(DeviceTokenParam deviceTokenParam, int deviceType) throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteAppUser(Long id) throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
AppUserQueryVo getAppUserById(Long id) throws Exception;
/**
* 获取自己的信息详情
*/
MyInfoVo getMyInfo() throws Exception;
/**
* 查询用户是否绑定微信
*/
ApiResult<LoginAppUserTokenVo> checkWechatUserBinding(String code) throws WxErrorException;
/**
* 获取分页对象
*
* @param appUserPageParam
* @return
* @throws Exception
*/
Paging<AppUserQueryVo> getAppUserPageList(AppUserPageParam appUserPageParam) throws Exception;
}
package com.sien.common.service.impl;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sien.common.entity.AppUser;
import com.sien.common.service.AppSmsService;
import com.sien.common.service.AppUserService;
import com.sien.common.sms.SendSms;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.SmsCode;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.time.Duration;
@Service
@Slf4j
public class AppSmsServiceImpl implements AppSmsService {
@Autowired
private AppUserService appUserService;
/**
* 获取当前环境
*/
@Value("${spring.profiles.active}")
private String profiles;
@Autowired
private RedisTemplate redisTemplate;
/**
* 测试环境
*/
private static final String DEV_PROFILE = "dev";
/**
* 测试环境默认短信验证码
*/
private static final String DEFAULT_DEV_SMS_CODE = "666666";
/**
* 注册 短信验证码redis的key值
*/
private static final String SMS_REGIEST = "sms:app:register:%s_%s";
/**
* 修改 短信验证码redis的key值
*/
private static final String SMS_UPDATE = "sms:app:update:%s_%s";
/**
* 修改 短信验证码redis的key值,新手机
*/
private static final String SMS_UPDATE_NEW = "sms:app:updateNew:%s_%s";
/**
* 短信验证码redis的key值
*/
private static final String SMS_LOGIN = "sms:app:login:%s_%s";
@Override
public void deleteRegisterCode(String area, String number) {
redisTemplate.delete(String.format(SMS_REGIEST, area, number));
}
@Override
public void deleteUpdatePhoneCode(String area, String number) {
redisTemplate.delete(String.format(SMS_UPDATE, area, number));
}
@Override
public void deleteUpdatePhoneCodeNew(String area, String number) {
redisTemplate.delete(String.format(SMS_UPDATE_NEW, area, number));
}
@Override
public ApiResult<Object> registerOrLoginCode(String area, String number) {
return getSmsCodeApiResult(String.format(SMS_REGIEST, area, number), area, number);
}
@Override
public ApiResult<Object> updatePhoneCodeSendToOld() throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
// 向旧手机发送验证码
String key = String.format(SMS_UPDATE, appUserById.getPhoneArea(), appUserById.getPhone());
ApiResult<Object> smsCodeApiResult = getSmsCodeApiResult(key, appUserById.getPhoneArea(), appUserById.getPhone());
return smsCodeApiResult;
}
@Override
public ApiResult<Object> updatePhoneCodeSendToNew(String phoneArea, String phone) {
// 判断手机号是否已经注册
AppUser one = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhoneArea, phoneArea)
.eq(AppUser::getPhone, phone));
if (one != null) {
return ApiResult.fail(ApiCode.UPDATA_PHONE_USE, null);
}
// 向新手机发送验证码
String key = String.format(SMS_UPDATE_NEW, phoneArea, phone);
ApiResult<Object> smsCodeApiResult = getSmsCodeApiResult(key, phoneArea, phone);
return smsCodeApiResult;
}
@Override
public ApiResult<Boolean> checkPhoneCodeOld(String code) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
boolean equalsRegisterCode = this.equalsUpdatePhoneCodeOld(appUserById.getPhoneArea(), appUserById.getPhone(), code);
if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR);
}
return ApiResult.ok();
}
/**
* 获取短信验证码
*
* @param key
* @param area
* @param number
* @return
*/
private ApiResult<Object> getSmsCodeApiResult(String key, String area, String number) {
// 生成验证码code
String randomCode = getRandomCode();
// 过期时间(秒)
long expire = 120L;
Duration expireDuration = Duration.ofSeconds(expire);
// 存至redis
redisTemplate.opsForValue().set(key, randomCode, expireDuration);
SmsCode smsCode = new SmsCode();
smsCode.setSmsCode(randomCode);
log.info(area + "," + number + ":" + randomCode);
// 调用短信平台发送短信代码
try {
SendSms.send("+" + area + number, randomCode);
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
return ApiResult.fail(ApiCode.FAIL, null);
}
return ApiResult.ok(null);
}
@Override
public ApiResult LoginType(String area, String number) {
return getSmsCodeApiResult(String.format(SMS_LOGIN, area, number), area, number);
}
@Override
public boolean equalsRegisterCode(String area, String number, String code) {
return equalsSms(SMS_REGIEST, area, number, code);
}
@Override
public boolean equalsUpdatePhoneCodeOld(String area, String number, String code) {
return equalsSms(SMS_UPDATE, area, number, code);
}
@Override
public boolean equalsUpdatePhoneCodeNew(String area, String number, String code) {
return equalsSms(SMS_UPDATE_NEW, area, number, code);
}
private boolean equalsSms(String type, String area, String number, String code) {
String formatKey = String.format(type, area, number);
Object key = redisTemplate.opsForValue().get(formatKey);
if (key == null) {
return false;
}
return String.valueOf(key).equals(code);
}
@Override
public boolean equalsLoginCode(String area, String number, String code) {
return equalsSms(SMS_LOGIN, area, number, code);
}
/**
* 生成验证码code
*
* @return
*/
String getRandomCode() {
// 如果为测试环境则生成默认
if (profiles.equals(DEV_PROFILE) || profiles.equals("test")) {
return DEFAULT_DEV_SMS_CODE;
} else {
return RandomUtil.randomNumbers(6);
}
}
}
package com.sien.common.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sien.common.entity.AppUser;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.AppUserInfoParam;
import com.sien.common.service.AppSmsService;
import com.sien.common.service.AppUserApiService;
import com.sien.common.service.AppUserService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import io.geekidea.springbootplus.config.properties.WxMpProperties;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class AppUserApiServiceImpl implements AppUserApiService {
@Autowired
private AppSmsService appSmsService;
@Autowired
private AppUserService appUserService;
// @Autowired
// private WxMpService wxMpService;
@Autowired
private WxMpProperties properties;
private WxMpService getWxMpService() {
// 代码里 getConfigs()处报错的同学,请注意仔细阅读项目说明,你的IDE需要引入lombok插件!!!!
final List<WxMpProperties.MpConfig> configs = this.properties.getConfigs();
if (configs == null) {
throw new RuntimeException("添加下相关配置,注意别配错了!");
}
WxMpService service = new WxMpServiceImpl();
service.setMultiConfigStorages(configs
.stream().map(a -> {
WxMpDefaultConfigImpl configStorage;
//
configStorage = new WxMpDefaultConfigImpl();
configStorage.setAppId(a.getAppId());
configStorage.setSecret(a.getSecret());
configStorage.setToken(a.getToken());
configStorage.setAesKey(a.getAesKey());
return configStorage;
}).collect(Collectors.toMap(WxMpDefaultConfigImpl::getAppId, a -> a, (o, n) -> o)));
return service;
}
@Override
public ApiResult<Boolean> updatePhone(String phoneArea, String phone, String code, String codeNew) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
// 校验旧手机验证码
boolean equalsRegisterCode = appSmsService.equalsUpdatePhoneCodeOld(appUserById.getPhoneArea(), appUserById.getPhone(), code);
if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR);
}
// 校验新手机验证码
boolean equalsRegisterCodeNew = appSmsService.equalsUpdatePhoneCodeNew(phoneArea, phone, codeNew);
if (!equalsRegisterCodeNew) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR_NEW);
}
// 删除已使用的旧手机验证码
appSmsService.deleteUpdatePhoneCode(appUserById.getPhoneArea(), appUserById.getPhone());
// 删除已使用的新手机验证码
appSmsService.deleteUpdatePhoneCodeNew(phoneArea, phone);
// 判断手机号是否已经注册
AppUser one = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhoneArea, phoneArea)
.eq(AppUser::getPhone, phone));
if (one != null) {
return ApiResult.fail(ApiCode.BUSINESS_EXCEPTION);
}
AppUser appUser = new AppUser();
appUser.setPhoneArea(phoneArea);
appUser.setPhone(phone);
appUser.setId(jwtToken.getUserId());
boolean b = appUserService.updateById(appUser);
if (b) {
return ApiResult.ok();
}
return ApiResult.fail();
}
@Override
public AppUser getUserInfo(Long userId) {
return appUserService.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getId, userId));
}
@Override
public ApiResult<List<AppUser>> getAppUserList(Set<Long> uids) {
return ApiResult.ok(appUserService.list(new QueryWrapper<AppUser>().lambda().in(AppUser::getId, uids)));
}
@Override
public ApiResult<LoginAppUserTokenVo> register(AppSmsRegisterParam loginParam, String language) throws Exception {
// 校验验证码
boolean equalsRegisterCode = appSmsService.equalsRegisterCode(loginParam.getPhoneArea(), loginParam.getPhone(), loginParam.getSmsCode());
if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_REGIST_ERROR, new LoginAppUserTokenVo());
}
// 删除已使用的验证码
appSmsService.deleteRegisterCode(loginParam.getPhoneArea(), loginParam.getPhone());
// 判断是否已经注册
if (appUserService.hasUserByPhoneNumer(loginParam.getPhoneArea(), loginParam.getPhone())) {
// 如果已经注册直接走登陆的代码
return appUserService.login(loginParam, language, true);
}
// 没注册则保存到数据库
AppUser appUserByOpenId = appUserService.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getWechatOpenId, loginParam.getOpenId()));
appUserByOpenId.setPhoneArea(loginParam.getPhoneArea());
appUserByOpenId.setPhone(loginParam.getPhone());
appUserByOpenId.setUsername(loginParam.getUserName());
boolean isDbOk = appUserService.updateById(appUserByOpenId);
if (!isDbOk) {
return ApiResult.fail(ApiCode.SPRING_BOOT_PLUS_EXCEPTION, new LoginAppUserTokenVo());
}
// 走登陆的代码
return appUserService.login(loginParam, language, false);
}
// @Override
// public ApiResult<LoginAppUserTokenVo> login(AppSmsRegisterParam loginParam, String language) throws Exception {
// return null;
// }
@Override
public boolean updateAppUser(AppUserInfoParam appUserInfoParam) throws Exception {
AppUser appUser = new AppUser();
BeanUtils.copyProperties(appUserInfoParam, appUser);
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
appUser.setId(jwtToken.getUserId());
return appUserService.updateAppUser(appUser);
}
}
package com.sien.common.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.AppUser;
import com.sien.common.enums.StateEnum;
import com.sien.common.mapper.AppUserMapper;
import com.sien.common.param.AppUserPageParam;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.DeviceTokenParam;
import com.sien.common.service.AppUserService;
import com.sien.common.service.DonationRecordService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.DonationRankAndTotal;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.vo.app.MyInfoVo;
import io.geekidea.springbootplus.config.properties.JwtProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties;
import io.geekidea.springbootplus.config.properties.WxMpProperties;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.cache.AppLoginRedisService;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import io.geekidea.springbootplus.framework.shiro.jwt.realm.LoginClientTypeEnum;
import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import io.geekidea.springbootplus.framework.shiro.util.SaltUtil;
import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.time.Duration;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
;
/**
* APP用户 服务实现类
*
* @author wei
* @since 2020-09-23
*/
@Slf4j
@Service
public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser> implements AppUserService {
@Autowired
private WxMpProperties properties;
@Autowired
private RedisTemplate redisTemplate;
@Lazy
@Autowired
private AppLoginRedisService appLoginRedisService;
@Lazy
@Autowired
private JwtProperties jwtProperties;
@Autowired
private SpringBootPlusProperties springBootPlusProperties;
@Autowired
private AppUserMapper appUserMapper;
@Autowired
private DonationRecordService donationRecordService;
@Override
public boolean hasUserByPhoneNumer(String phoneArea, String phone) {
Integer selectCount = appUserMapper.selectCount(new QueryWrapper<AppUser>(
new AppUser().setPhoneArea(phoneArea).setPhone(phone)
));
return selectCount > 0;
}
// @Override
// public ApiResult<LoginAppUserTokenVo> register(AppSmsRegisterParam appSmsRegisterParam, String language) {
//// JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
//
// // 校验短信验证码是否正确
//
// return null;
// }
@Override
public ApiResult<LoginAppUserTokenVo> login(AppSmsRegisterParam loginParam, String language, Boolean hasRegister) {
// 从数据库中获取登录用户信息
AppUser appUser = appUserMapper.selectOne(new QueryWrapper<>(
new AppUser().setPhoneArea(loginParam.getPhoneArea()).setPhone(loginParam.getPhone()))
);
if (appUser == null) {
log.error("登录失败,用户名或密码错误 loginParam:{}", loginParam);
return ApiResult.fail(ApiCode.USER_NOT_FOUND, language);
}
if (StateEnum.DISABLE.getCode().equals(appUser.getState())) {
// throw new AuthenticationException("账号已禁用");
log.error("登录失败,账号已禁用 loginParam:{}", loginParam);
return ApiResult.fail(ApiCode.USER_NOT_FOUND, language);
}
LoginAppUserTokenVo loginAppUserTokenVo = getLoginAppUserTokenVo(hasRegister, appUser);
return ApiResult.ok(loginAppUserTokenVo);
}
private LoginAppUserTokenVo getLoginAppUserTokenVo(Boolean hasRegister, AppUser appUser) {
// 将系统用户对象转换成登录用户对象
LoginUserVo loginSysUserVo = new LoginUserVo();
loginSysUserVo.setId(appUser.getId());
loginSysUserVo.setUsername(appUser.getId().toString());
// 获取数据库中保存的盐值
String newSalt = SaltUtil.getSalt(appUser.getSalt(), jwtProperties);
// 生成token字符串并返回
Long expireSecond = jwtProperties.getExpireSecond();
String token = JwtUtil.generateToken(appUser.getId().toString(), newSalt, Duration.ofSeconds(expireSecond));
log.debug("token:{}", token);
// 创建AuthenticationToken
JwtToken jwtToken = JwtToken.build(token, appUser.getId().toString(), appUser.getId(), newSalt, expireSecond, LoginClientTypeEnum.APP.getType(), null);
boolean enableShiro = springBootPlusProperties.getShiro().isEnable();
if (enableShiro) {
// 从SecurityUtils里边创建一个 subject
Subject subject = SecurityUtils.getSubject();
// 执行认证登录
subject.login(jwtToken);
} else {
log.warn("未启用Shiro");
}
// 缓存登录信息到Redis
appLoginRedisService.cacheLoginInfo(jwtToken, loginSysUserVo);
log.debug("登录成功,id:{}", appUser.getId().toString());
// 缓存登录信息到redis
String tokenSha256 = DigestUtils.sha256Hex(token);
redisTemplate.opsForValue().set(tokenSha256, loginSysUserVo, 1, TimeUnit.DAYS);
// 返回token和登录用户信息对象
LoginAppUserTokenVo loginAppUserTokenVo = new LoginAppUserTokenVo();
BeanUtils.copyProperties(appUser, loginAppUserTokenVo);
loginAppUserTokenVo.setToken(token);
// loginAppUserTokenVo.setId(appUser.getId());
loginAppUserTokenVo.setHasRegister(hasRegister);
return loginAppUserTokenVo;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveAppUser(AppUser appUser) throws Exception {
return super.save(appUser);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateAppUser(AppUser appUser) throws Exception {
return super.updateById(appUser);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateDeviceToken(DeviceTokenParam deviceTokenParam, int deviceType) throws Exception {
AppUser appUser = new AppUser();
// appUser.setDeviceToken(deviceTokenParam.getDeviceToken());
// appUser.setDeviceType(deviceType);
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
appUser.setId(jwtToken.getUserId());
// 重置redis中的token
return this.updateAppUser(appUser);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteAppUser(Long id) throws Exception {
return super.removeById(id);
}
@Override
public AppUserQueryVo getAppUserById(Long id) throws Exception {
return appUserMapper.getAppUserById(id);
}
@Override
public MyInfoVo getMyInfo() throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserMapper.getAppUserById(jwtToken.getUserId());
DonationRankAndTotal donationRankAndTotal = donationRecordService.getDonationRankAndTotal(jwtToken.getUserId());
if (donationRankAndTotal == null) {
donationRankAndTotal =new DonationRankAndTotal();
donationRankAndTotal.setDrTotal(new BigDecimal("0"));
donationRankAndTotal.setRank(9999L);
}
MyInfoVo myInfoVo = new MyInfoVo();
myInfoVo.setAppUserQueryVo(appUserById);
myInfoVo.setDonationRankAndTotal(donationRankAndTotal);
return myInfoVo;
}
private WxMpService getWxMpService() {
// 代码里 getConfigs()处报错的同学,请注意仔细阅读项目说明,你的IDE需要引入lombok插件!!!!
final List<WxMpProperties.MpConfig> configs = this.properties.getConfigs();
if (configs == null) {
throw new RuntimeException("添加下相关配置,注意别配错了!");
}
WxMpService service = new WxMpServiceImpl();
service.setMultiConfigStorages(configs
.stream().map(a -> {
WxMpDefaultConfigImpl configStorage;
//
configStorage = new WxMpDefaultConfigImpl();
configStorage.setAppId(a.getAppId());
configStorage.setSecret(a.getSecret());
configStorage.setToken(a.getToken());
configStorage.setAesKey(a.getAesKey());
return configStorage;
}).collect(Collectors.toMap(WxMpDefaultConfigImpl::getAppId, a -> a, (o, n) -> o)));
return service;
}
@Override
public ApiResult<LoginAppUserTokenVo> checkWechatUserBinding(String code) {
log.info("获取accessToken,code:"+code);
WxOAuth2AccessToken accessToken = null;
try {
accessToken = getWxMpService().getOAuth2Service().getAccessToken(code);
} catch (WxErrorException e) {
log.error("accessToken错误,code:" + code+"," + e);
return ApiResult.result(ApiCode.USER_WECHAT_CODE, null);
}
// 查询openId是否被绑定
String openId = accessToken.getOpenId();
AppUser appUserByOpenId = super.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getWechatOpenId, openId));
// 第一次点击 没有绑定的情况
if (appUserByOpenId == null) {
AppUser appUsernew = new AppUser();
// 从微信获取用户信息
WxOAuth2UserInfo wechatUserInfo = null;
try {
wechatUserInfo = getWxMpService().getOAuth2Service().getUserInfo(accessToken, null);
} catch (WxErrorException e) {
log.error("getUserInfo错误,code:" + code+"," + e);
return ApiResult.result(ApiCode.USER_WECHAT_CODE, null);
}
appUsernew.setWechatOpenId(openId);
appUsernew.setNickname(wechatUserInfo.getNickname());
appUsernew.setHead(wechatUserInfo.getHeadImgUrl());
appUsernew.setLocation(wechatUserInfo.getCountry() + wechatUserInfo.getProvince() + wechatUserInfo.getCity());
appUsernew.setWechatOpenId(wechatUserInfo.getOpenid());
// 先保存至数据库
super.save(appUsernew);
// 返回告诉前端没有绑定过
LoginAppUserTokenVo loginAppUserTokenVo = new LoginAppUserTokenVo();
loginAppUserTokenVo.setHasRegister(Boolean.FALSE);
loginAppUserTokenVo.setOpenId(openId);
return ApiResult.ok(loginAppUserTokenVo);
}
// 点击过 但没有绑定手机
LoginAppUserTokenVo loginAppUserTokenVo;
if (StringUtils.isEmpty(appUserByOpenId.getPhone())) {
// 返回告诉前端没有绑定过
loginAppUserTokenVo = new LoginAppUserTokenVo();
loginAppUserTokenVo.setHasRegister(Boolean.FALSE);
loginAppUserTokenVo.setOpenId(openId);
return ApiResult.ok(loginAppUserTokenVo);
} else {
// 有绑定直接返回用户token
loginAppUserTokenVo = getLoginAppUserTokenVo(Boolean.TRUE, appUserByOpenId);
}
return ApiResult.ok(loginAppUserTokenVo);
}
@Override
public Paging<AppUserQueryVo> getAppUserPageList(AppUserPageParam appUserPageParam) throws Exception {
Page<AppUserQueryVo> page = new PageInfo<>(appUserPageParam, OrderItem.desc(getLambdaColumn(AppUser::getCreateTime)));
IPage<AppUserQueryVo> iPage = appUserMapper.getAppUserPageList(page, appUserPageParam);
return new Paging<AppUserQueryVo>(iPage);
}
}
package com.sien.common.service.impl;
import cn.hutool.captcha.generator.RandomGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.sien.common.entity.AppUser;
import com.sien.common.entity.DonationAgent;
import com.sien.common.entity.DonationRecord;
import com.sien.common.mapper.DonationRecordMapper;
import com.sien.common.param.DonationRecordPageParam;
import com.sien.common.param.app.DonationRecordAdd;
import com.sien.common.service.AppUserService;
import com.sien.common.service.DonationAgentService;
import com.sien.common.service.DonationRecordService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.DonationRankAndTotal;
import com.sien.common.vo.DonationRecordQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 捐款记录 服务实现类
*
* @author hewei
* @since 2021-02-25
*/
@Slf4j
@Service
public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMapper, DonationRecord> implements DonationRecordService {
private static final String BODY = "厦门市四恩慈善会捐款";
private static final String NOTIFY_URL = "/api/pay/notify/donationOrder";
@Autowired
private DonationRecordMapper donationRecordMapper;
@Autowired
private WxPayService wxService;
@Resource
HttpServletRequest httpServletRequest;
@Value("${spring-boot-plus.domain}")
private String domain;
@Autowired
private AppUserService appUserService;
@Autowired
private DonationAgentService donationAgentService;
@Override
public DonationRankAndTotal getDonationRankAndTotal(Long userId) {
return donationRecordMapper.getDonationRankAndTotal(userId);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveDonationRecord(DonationRecord donationRecord) throws Exception {
return super.save(donationRecord);
}
@Override
public String donationOrderNotifyResult(String xmlData) {
WxPayOrderNotifyResult notifyResult;
try {
notifyResult = this.wxService.parseOrderNotifyResult(xmlData);
} catch (WxPayException e) {
// 是否能解密成功
e.printStackTrace();
return WxPayNotifyResponse.fail("错误");
}
DonationRecord donationRecord = super.getOne(new QueryWrapper<DonationRecord>().lambda().eq(DonationRecord::getWxMerPayId, notifyResult.getOutTradeNo()));
// 如果已经支付 直接响应成功
if (donationRecord.getPayStatus() == 1) {
return WxPayNotifyResponse.successResp("成功");
}
donationRecord.setPayStatus(1);
donationRecord.setPayTime(new Date());
super.updateById(donationRecord);
return WxPayNotifyResponse.successResp("成功");
}
@Override
public ApiResult<WxPayMpOrderResult> add(DonationRecordAdd donationRecordAdd) {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = null;
try {
appUserById = appUserService.getAppUserById(jwtToken.getUserId());
} catch (Exception e) {
e.printStackTrace();
return ApiResult.fail(ApiCode.FAIL, new WxPayMpOrderResult());
}
// 用户判空
if (appUserById == null) {
return ApiResult.fail(ApiCode.FAIL, new WxPayMpOrderResult());
}
String openid = appUserById.getWechatOpenId();
String spbillCreateIp = httpServletRequest.getRemoteAddr();
BigDecimal num2 = new BigDecimal(100);
int totalFee = donationRecordAdd.getMoney().multiply(num2).intValue();
DonationRecord donationRecord = new DonationRecord();
// 捐款接收人, 如果为别人捐款
if (donationRecordAdd.getIsReplace() == 1) {
// 判断接收人不能为自己
if (appUserById.getPhoneArea().equals(donationRecordAdd.getPhoneArea()) &&
appUserById.getPhone().equals(donationRecordAdd.getUserPhone())) {
return ApiResult.fail(ApiCode.PHONE_IS_ME, new WxPayMpOrderResult());
}
AppUser user = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhone, donationRecordAdd.getUserPhone())
.eq(AppUser::getPhoneArea, donationRecordAdd.getPhoneArea()));
//判断接收方是否存在
if (user == null) {
return ApiResult.fail(ApiCode.USER_NOT_FOUND, new WxPayMpOrderResult());
}
donationRecord.setFkUserId(user.getId());
} else {
donationRecord.setFkUserId(jwtToken.getUserId());
}
// 设置捐款记录表
donationRecord.setMoney(donationRecordAdd.getMoney());
donationRecord.setPurpose(donationRecordAdd.getPurpose());
donationRecord.setWay(donationRecordAdd.getWay());
donationRecord.setIsReplace(donationRecordAdd.getIsReplace());
String outTradeNo = new RandomGenerator(32).generate();
donationRecord.setWxMerPayId(outTradeNo);
// 保存至数据库
super.save(donationRecord);
// 为代理捐款 则保存代理记录
if (donationRecordAdd.getIsReplace() == 1) {
DonationAgent donationAgent = new DonationAgent();
donationAgent.setFkUserId(jwtToken.getUserId());
donationAgent.setFkRecordId(donationRecord.getId());
donationAgentService.save(donationAgent);
}
// 调用微信支付api
WxPayMpOrderResult order = null;
try {
order = getWxPayMpOrderResult( outTradeNo, openid, spbillCreateIp, totalFee);
} catch (WxPayException e) {
e.printStackTrace();
}
return ApiResult.ok(order);
}
private WxPayMpOrderResult getWxPayMpOrderResult(String outTradeNo, String openid, String spbillCreateIp, int totalFee) throws WxPayException {
WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest =new WxPayUnifiedOrderRequest();
wxPayUnifiedOrderRequest.setBody(DonationRecordServiceImpl.BODY);
// 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
wxPayUnifiedOrderRequest.setOutTradeNo(outTradeNo);
//订单总金额,单位为分,详见支付金额
wxPayUnifiedOrderRequest.setTotalFee(totalFee);
// APP和网页支付提交用户端ip
wxPayUnifiedOrderRequest.setSpbillCreateIp(spbillCreateIp);
// 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
wxPayUnifiedOrderRequest.setNotifyUrl(domain + DonationRecordServiceImpl.NOTIFY_URL);
wxPayUnifiedOrderRequest.setOpenid(openid);
String jsapi = "JSAPI";
wxPayUnifiedOrderRequest.setTradeType(jsapi);
WxPayMpOrderResult order = null;
// try {
order = this.wxService.createOrder(wxPayUnifiedOrderRequest);
// } catch (WxPayException e) {
// e.printStackTrace();
// }
return order;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateDonationRecord(DonationRecord donationRecord) throws Exception {
return super.updateById(donationRecord);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteDonationRecord(Long id) throws Exception {
return super.removeById(id);
}
@Override
public DonationRecordQueryVo getDonationRecordById(Long id) throws Exception {
return donationRecordMapper.getDonationRecordById(id);
}
@Override
public Paging<DonationRecordQueryVo> getDonationRecordPageList(DonationRecordPageParam donationRecordPageParam) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
donationRecordPageParam.setPageSize(100000L);
Page<DonationRecordQueryVo> page = new PageInfo<>(donationRecordPageParam, OrderItem.desc(getLambdaColumn(DonationRecord::getCreateTime)));
IPage<DonationRecordQueryVo> iPage = donationRecordMapper.getDonationRecordPageList(page, donationRecordPageParam, jwtToken.getUserId());
return new Paging<DonationRecordQueryVo>(iPage);
}
@Override
public ApiResult<List<DonationRecord>> getDonationRecordAllList() throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
List<DonationRecord> donationRecords = donationRecordMapper.selectList(
new QueryWrapper<DonationRecord>().lambda()
.eq(DonationRecord::getFkUserId, jwtToken.getUserId())
.eq(DonationRecord::getPayStatus, 1L
));
return ApiResult.ok(donationRecords);
}
}
package com.sien.common.service.impl;
import cn.hutool.captcha.generator.RandomGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.sien.common.entity.AppUser;
import com.sien.common.entity.VipRecord;
import com.sien.common.mapper.VipRecordMapper;
import com.sien.common.param.VipOpenParam;
import com.sien.common.param.VipRecordPageParam;
import com.sien.common.service.AppUserService;
import com.sien.common.service.VipPriceService;
import com.sien.common.service.VipRecordService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.VipRecordQueryVo;
import com.sien.common.vo.app.VipPriceQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
/**
* Vip开通记录 服务实现类
*
* @author hewei
* @since 2021-02-25
*/
@Slf4j
@Service
public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRecord> implements VipRecordService {
private static final String BODY = "厦门市四恩慈善会开通会员";
private static final String NOTIFY_URL = "/api/pay/notify/vipOrder";
@Autowired
private VipRecordMapper vipRecordMapper;
@Autowired
private WxPayService wxService;
@Autowired
private AppUserService appUserService;
@Resource
HttpServletRequest httpServletRequest;
@Autowired
private VipPriceService vipPriceService;
@Value("${spring-boot-plus.domain}")
private String domain;
@Override
public String vipOrderNotifyResult(String xmlData) {
WxPayOrderNotifyResult notifyResult;
try {
notifyResult = this.wxService.parseOrderNotifyResult(xmlData);
} catch (WxPayException e) {
// 是否能解密成功
e.printStackTrace();
return WxPayNotifyResponse.fail("错误");
}
VipRecord vipRecord = super.getOne(new QueryWrapper<VipRecord>().lambda().eq(VipRecord::getWxMerPayId, notifyResult.getOutTradeNo()));
// 如果已经支付 直接响应成功
if (vipRecord.getPayStatus() == 1) {
return WxPayNotifyResponse.successResp("成功");
}
vipRecord.setPayStatus(1);
vipRecord.setPayTime(new Date());
super.updateById(vipRecord);
return WxPayNotifyResponse.successResp("成功");
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveVipRecord(VipRecord vipRecord) throws Exception {
return super.save(vipRecord);
}
private WxPayMpOrderResult getWxPayMpOrderResult(String outTradeNo, String openid, String spbillCreateIp, int totalFee) throws WxPayException {
WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = new WxPayUnifiedOrderRequest();
wxPayUnifiedOrderRequest.setBody(VipRecordServiceImpl.BODY);
// 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
wxPayUnifiedOrderRequest.setOutTradeNo(outTradeNo);
//订单总金额,单位为分,详见支付金额
wxPayUnifiedOrderRequest.setTotalFee(totalFee);
// APP和网页支付提交用户端ip
wxPayUnifiedOrderRequest.setSpbillCreateIp(spbillCreateIp);
// 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
wxPayUnifiedOrderRequest.setNotifyUrl(domain + VipRecordServiceImpl.NOTIFY_URL);
wxPayUnifiedOrderRequest.setOpenid(openid);
String jsapi = "JSAPI";
wxPayUnifiedOrderRequest.setTradeType(jsapi);
WxPayMpOrderResult order = null;
// try {
order = this.wxService.createOrder(wxPayUnifiedOrderRequest);
// } catch (WxPayException e) {
// e.printStackTrace();
// }
return order;
}
@Override
public ApiResult<WxPayMpOrderResult> openVip(VipOpenParam vipOpenParam) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
// 获取vip价格表
VipPriceQueryVo vipPriceById = vipPriceService.getVipPriceById(vipOpenParam.getVipLevelId());
if (vipPriceById == null) {
return ApiResult.fail(ApiCode.FAIL, null);
}
// 应付金额
BigDecimal money = vipPriceById.getPrice().multiply(new BigDecimal(vipOpenParam.getYears()));
// 设置到期时间
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, vipOpenParam.getYears());
Date expiredAt = calendar.getTime();
// 商家订单号
String outTradeNo = new RandomGenerator(32).generate();
VipRecord vipRecord = new VipRecord();
vipRecord.setMoney(money);
vipRecord.setExpiredAt(expiredAt);
vipRecord.setYears(vipOpenParam.getYears());
vipRecord.setPayStatus(0);
vipRecord.setWxMerPayId(outTradeNo);
// // 判断是否为替他人
if (vipOpenParam.getIsReplace() == 1) {
// 判断接收人不能为自己
if (appUserById.getPhoneArea().equals(vipOpenParam.getPhoneArea()) &&
appUserById.getPhone().equals(vipOpenParam.getUserPhone())) {
return ApiResult.fail(ApiCode.PHONE_IS_ME, new WxPayMpOrderResult());
}
AppUser user = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhone, vipOpenParam.getUserPhone())
.eq(AppUser::getPhoneArea, vipOpenParam.getPhoneArea()));
//判断接收方是否存在
if (user == null) {
return ApiResult.fail(ApiCode.USER_NOT_FOUND, new WxPayMpOrderResult());
}
vipRecord.setFkUserId(user.getId());
vipRecord.setFkRechargeUser(jwtToken.getUserId());
} else {
vipRecord.setFkUserId(jwtToken.getUserId());
vipRecord.setFkRechargeUser(-1L);
}
// 保存数据库
boolean save = super.save(vipRecord);
if (save) {
// 保存成功调用微信支付
String ip = httpServletRequest.getRemoteAddr();
BigDecimal num2 = new BigDecimal(100);
int totalFee = money.multiply(num2).intValue();
WxPayMpOrderResult wxPayMpOrderResult = getWxPayMpOrderResult(outTradeNo, appUserById.getWechatOpenId(), ip, totalFee);
return ApiResult.ok(wxPayMpOrderResult);
} else {
return ApiResult.fail(ApiCode.FAIL, null);
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateVipRecord(VipRecord vipRecord) throws Exception {
return super.updateById(vipRecord);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteVipRecord(Long id) throws Exception {
return super.removeById(id);
}
@Override
public VipRecordQueryVo getVipRecordById(Long id) throws Exception {
return vipRecordMapper.getVipRecordById(id);
}
@Override
public Paging<VipRecordQueryVo> getVipRecordPageList(VipRecordPageParam vipRecordPageParam) throws Exception {
Page<VipRecordQueryVo> page = new PageInfo<>(vipRecordPageParam, OrderItem.desc(getLambdaColumn(VipRecord::getCreateTime)));
IPage<VipRecordQueryVo> iPage = vipRecordMapper.getVipRecordPageList(page, vipRecordPageParam);
return new Paging<VipRecordQueryVo>(iPage);
}
}
package com.sien.common.campusstore; package com.wecloud.im.campusstore;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.BaseTypeHandler;
......
package com.sien.common.campusstore; package com.wecloud.im.campusstore;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.BaseTypeHandler;
......
package com.sien.common.config; package com.wecloud.im.config;
import io.geekidea.springbootplus.config.properties.WxMpProperties; import io.geekidea.springbootplus.config.properties.WxMpProperties;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
......
package com.sien.common.config; package com.wecloud.im.config;
import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.service.WxPayService; import com.github.binarywang.wxpay.service.WxPayService;
......
package com.sien.common.constant; package com.wecloud.im.constant;
/** /**
* @ClassName Constant * @ClassName Constant
......
package com.sien.common.controller; package com.wecloud.im.controller;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog; import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
......
package com.sien.common.controller; package com.wecloud.im.controller;
/** /**
* 替他人捐款记录表 控制器 * 替他人捐款记录表 控制器
......
package com.sien.common.controller; package com.wecloud.im.controller;
import com.sien.common.entity.VipPrice; import com.wecloud.im.entity.VipPrice;
import com.sien.common.service.VipPriceService; import com.wecloud.im.service.VipPriceService;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog; import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.convert; package com.wecloud.im.convert;
import com.sien.common.entity.SysUser; import com.wecloud.im.entity.SysUser;
import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo; import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity; package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity.base; package com.wecloud.im.entity.base;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
......
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.sien.common.enums; package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.exception; package com.wecloud.im.exception;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException; import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.exception; package com.wecloud.im.exception;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException; import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException;
......
package com.sien.common.factory; package com.wecloud.im.factory;
import io.geekidea.springbootplus.config.properties.WxMpProperties; import io.geekidea.springbootplus.config.properties.WxMpProperties;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
......
package com.sien.common.factory; package com.wecloud.im.factory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.sien.common.factory; package com.wecloud.im.factory;
/** /**
* @author: JJww * @author: JJww
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.interceptor; package com.wecloud.im.interceptor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.interceptor; package com.wecloud.im.interceptor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.interceptor; package com.wecloud.im.interceptor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
......
package com.sien.common.mapper; package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.AppUser; import com.wecloud.im.entity.AppUser;
import com.sien.common.param.AppUserPageParam; import com.wecloud.im.param.AppUserPageParam;
import com.sien.common.vo.AppUserQueryVo; import com.wecloud.im.vo.AppUserQueryVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.sien.common.mapper; package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sien.common.entity.DonationAgent; import com.wecloud.im.entity.DonationAgent;
import com.sien.common.param.DonationAgentPageParam; import com.wecloud.im.param.DonationAgentPageParam;
import com.sien.common.vo.DonationAgentQueryVo; import com.wecloud.im.vo.DonationAgentQueryVo;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.sien.common.mapper; package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.DonationRecord; import com.wecloud.im.entity.DonationRecord;
import com.sien.common.param.DonationRecordPageParam; import com.wecloud.im.param.DonationRecordPageParam;
import com.sien.common.vo.DonationRankAndTotal; import com.wecloud.im.vo.DonationRankAndTotal;
import com.sien.common.vo.DonationRecordQueryVo; import com.wecloud.im.vo.DonationRecordQueryVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.sien.common.mapper; package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.VipPrice; import com.wecloud.im.entity.VipPrice;
import com.sien.common.param.VipPricePageParam; import com.wecloud.im.param.VipPricePageParam;
import com.sien.common.vo.app.VipPriceQueryVo; import com.wecloud.im.vo.app.VipPriceQueryVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.sien.common.mapper; package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.VipRecord; import com.wecloud.im.entity.VipRecord;
import com.sien.common.param.VipRecordPageParam; import com.wecloud.im.param.VipRecordPageParam;
import com.sien.common.vo.VipRecordQueryVo; import com.wecloud.im.vo.VipRecordQueryVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.sien.common.param; package com.wecloud.im.param;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.Data; import lombok.Data;
......
package com.sien.common.param; package com.wecloud.im.param;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.Data; import lombok.Data;
......
package com.sien.common.param; package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam; import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.param; package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.shiro.service.LoginUsername; import io.geekidea.springbootplus.framework.shiro.service.LoginUsername;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.param; package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.shiro.service.LoginUsername; import io.geekidea.springbootplus.framework.shiro.service.LoginUsername;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
package com.sien.common.param; package com.wecloud.im.param;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.Data; import lombok.Data;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.param; package com.wecloud.im.param;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.param; package com.wecloud.im.param;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.param; package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam; import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
package com.sien.common.param; package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam; import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
package com.sien.common.param; package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam; import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.param.app; package com.wecloud.im.param.app;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.param.app; package com.wecloud.im.param.app;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.param.app; package com.wecloud.im.param.app;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity; import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
package com.sien.common.param.app; package com.wecloud.im.param.app;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity; import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
package com.sien.common.param.app; package com.wecloud.im.param.app;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
......
package com.sien.common.param.app; package com.wecloud.im.param.app;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
......
package com.sien.common.push.jiguang; package com.wecloud.im.push.jiguang;
import cn.jiguang.common.ClientConfig; import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.ServiceHelper; import cn.jiguang.common.ServiceHelper;
......
package com.sien.common.push.umeng; package com.wecloud.im.push.umeng;
import org.json.JSONObject; import org.json.JSONObject;
......
package com.sien.common.push.umeng; package com.wecloud.im.push.umeng;
public class App { public class App {
......
package com.sien.common.push.umeng; package com.wecloud.im.push.umeng;
import com.sien.common.push.umeng.android.AndroidBroadcast; import com.wecloud.im.push.umeng.android.AndroidBroadcast;
import com.sien.common.push.umeng.android.AndroidCustomizedcast; import com.wecloud.im.push.umeng.android.AndroidCustomizedcast;
import com.sien.common.push.umeng.android.AndroidFilecast; import com.wecloud.im.push.umeng.android.AndroidFilecast;
import com.sien.common.push.umeng.android.AndroidGroupcast; import com.wecloud.im.push.umeng.android.AndroidGroupcast;
import com.sien.common.push.umeng.android.AndroidUnicast; import com.wecloud.im.push.umeng.android.AndroidUnicast;
import com.sien.common.push.umeng.ios.IOSBroadcast; import com.wecloud.im.push.umeng.ios.IOSBroadcast;
import com.sien.common.push.umeng.ios.IOSCustomizedcast; import com.wecloud.im.push.umeng.ios.IOSCustomizedcast;
import com.sien.common.push.umeng.ios.IOSFilecast; import com.wecloud.im.push.umeng.ios.IOSFilecast;
import com.sien.common.push.umeng.ios.IOSGroupcast; import com.wecloud.im.push.umeng.ios.IOSGroupcast;
import com.sien.common.push.umeng.ios.IOSUnicast; import com.wecloud.im.push.umeng.ios.IOSUnicast;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
......
package com.sien.common.push.umeng; package com.wecloud.im.push.umeng;
import org.json.JSONObject; import org.json.JSONObject;
......
package com.sien.common.push.umeng; package com.wecloud.im.push.umeng;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
......
package com.sien.common.push.umeng; package com.wecloud.im.push.umeng;
import com.sien.common.factory.PushService; import com.wecloud.im.factory.PushService;
import com.sien.common.push.umeng.android.AndroidNotification; import com.wecloud.im.push.umeng.android.AndroidNotification;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.sien.common.push.umeng; package com.wecloud.im.push.umeng;
import com.sien.common.factory.PushService; import com.wecloud.im.factory.PushService;
import com.sien.common.push.umeng.ios.IOSNotification; import com.wecloud.im.push.umeng.ios.IOSNotification;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.sien.common.push.umeng; package com.wecloud.im.push.umeng;
import org.json.JSONObject; import org.json.JSONObject;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.sien.common.push.umeng.android; package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification; import com.wecloud.im.push.umeng.AndroidNotification;
public class AndroidBroadcast extends AndroidNotification { public class AndroidBroadcast extends AndroidNotification {
public AndroidBroadcast(String appkey, String appMasterSecret) throws Exception { public AndroidBroadcast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.android; package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification; import com.wecloud.im.push.umeng.AndroidNotification;
public class AndroidCustomizedcast extends AndroidNotification { public class AndroidCustomizedcast extends AndroidNotification {
public AndroidCustomizedcast(String appkey, String appMasterSecret) throws Exception { public AndroidCustomizedcast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.android; package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification; import com.wecloud.im.push.umeng.AndroidNotification;
public class AndroidFilecast extends AndroidNotification { public class AndroidFilecast extends AndroidNotification {
public AndroidFilecast(String appkey, String appMasterSecret) throws Exception { public AndroidFilecast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.android; package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification; import com.wecloud.im.push.umeng.AndroidNotification;
import org.json.JSONObject; import org.json.JSONObject;
public class AndroidGroupcast extends AndroidNotification { public class AndroidGroupcast extends AndroidNotification {
......
package com.sien.common.push.umeng.android; package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.UmengNotification; import com.wecloud.im.push.umeng.UmengNotification;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.Arrays; import java.util.Arrays;
......
package com.sien.common.push.umeng.android; package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification; import com.wecloud.im.push.umeng.AndroidNotification;
public class AndroidUnicast extends AndroidNotification { public class AndroidUnicast extends AndroidNotification {
public AndroidUnicast(String appkey, String appMasterSecret) throws Exception { public AndroidUnicast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.ios; package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification; import com.wecloud.im.push.umeng.IOSNotification;
public class IOSBroadcast extends IOSNotification { public class IOSBroadcast extends IOSNotification {
public IOSBroadcast(String appkey, String appMasterSecret) throws Exception { public IOSBroadcast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.ios; package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification; import com.wecloud.im.push.umeng.IOSNotification;
public class IOSCustomizedcast extends IOSNotification { public class IOSCustomizedcast extends IOSNotification {
public IOSCustomizedcast(String appkey, String appMasterSecret) throws Exception { public IOSCustomizedcast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.ios; package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification; import com.wecloud.im.push.umeng.IOSNotification;
public class IOSFilecast extends IOSNotification { public class IOSFilecast extends IOSNotification {
public IOSFilecast(String appkey, String appMasterSecret) throws Exception { public IOSFilecast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.ios; package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification; import com.wecloud.im.push.umeng.IOSNotification;
import org.json.JSONObject; import org.json.JSONObject;
public class IOSGroupcast extends IOSNotification { public class IOSGroupcast extends IOSNotification {
......
package com.sien.common.push.umeng.ios; package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.UmengNotification; import com.wecloud.im.push.umeng.UmengNotification;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.Arrays; import java.util.Arrays;
......
package com.sien.common.push.umeng.ios; package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification; import com.wecloud.im.push.umeng.IOSNotification;
public class IOSUnicast extends IOSNotification { public class IOSUnicast extends IOSNotification {
public IOSUnicast(String appkey, String appMasterSecret) throws Exception { public IOSUnicast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.service; package com.wecloud.im.service;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
......
package com.sien.common.service; package com.wecloud.im.service;
import com.sien.common.entity.AppUser; import com.wecloud.im.entity.AppUser;
import com.sien.common.param.app.AppSmsRegisterParam; import com.wecloud.im.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.AppUserInfoParam; import com.wecloud.im.param.app.AppUserInfoParam;
import com.sien.common.vo.app.LoginAppUserTokenVo; import com.wecloud.im.vo.app.LoginAppUserTokenVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import java.util.List; import java.util.List;
......
package com.sien.common.service; package com.wecloud.im.service;
import com.sien.common.entity.DonationAgent; import com.wecloud.im.entity.DonationAgent;
import com.sien.common.param.DonationAgentPageParam; import com.wecloud.im.param.DonationAgentPageParam;
import com.wecloud.im.vo.DonationAgentQueryVo;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
import com.sien.common.vo.DonationAgentQueryVo;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
/** /**
......
package com.sien.common.service; package com.wecloud.im.service;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.sien.common.entity.DonationRecord; import com.wecloud.im.entity.DonationRecord;
import com.sien.common.param.DonationRecordPageParam; import com.wecloud.im.param.DonationRecordPageParam;
import com.sien.common.param.app.DonationRecordAdd; import com.wecloud.im.param.app.DonationRecordAdd;
import com.sien.common.vo.DonationRankAndTotal; import com.wecloud.im.vo.DonationRankAndTotal;
import com.sien.common.vo.DonationRecordQueryVo; import com.wecloud.im.vo.DonationRecordQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
......
package com.sien.common.service; package com.wecloud.im.service;
import com.sien.common.entity.VipPrice; import com.wecloud.im.entity.VipPrice;
import com.sien.common.param.VipPricePageParam; import com.wecloud.im.param.VipPricePageParam;
import com.sien.common.vo.app.VipPriceQueryVo; import com.wecloud.im.vo.app.VipPriceQueryVo;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
......
package com.sien.common.service; package com.wecloud.im.service;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.sien.common.entity.VipRecord; import com.wecloud.im.entity.VipRecord;
import com.sien.common.param.VipOpenParam; import com.wecloud.im.param.VipOpenParam;
import com.sien.common.param.VipRecordPageParam; import com.wecloud.im.param.VipRecordPageParam;
import com.sien.common.vo.VipRecordQueryVo; import com.wecloud.im.vo.VipRecordQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
......
package com.sien.common.service.impl; package com.wecloud.im.service.impl;
import com.sien.common.entity.DonationAgent; import com.wecloud.im.entity.DonationAgent;
import com.sien.common.mapper.DonationAgentMapper; import com.wecloud.im.mapper.DonationAgentMapper;
import com.sien.common.service.DonationAgentService; import com.wecloud.im.service.DonationAgentService;
import com.sien.common.param.DonationAgentPageParam; import com.wecloud.im.param.DonationAgentPageParam;
import com.sien.common.vo.DonationAgentQueryVo; import com.wecloud.im.vo.DonationAgentQueryVo;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo; import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
......
package com.sien.common.service.impl; package com.wecloud.im.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.VipPrice; import com.wecloud.im.entity.VipPrice;
import com.sien.common.mapper.VipPriceMapper; import com.wecloud.im.mapper.VipPriceMapper;
import com.sien.common.param.VipPricePageParam; import com.wecloud.im.param.VipPricePageParam;
import com.sien.common.service.VipPriceService; import com.wecloud.im.service.VipPriceService;
import com.sien.common.vo.app.VipPriceQueryVo; import com.wecloud.im.vo.app.VipPriceQueryVo;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo; import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
......
package com.sien.common.sms; package com.wecloud.im.sms;
import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.HttpsURLConnection;
......
package com.sien.common.tillo.app_ws; package com.wecloud.im.tillo.app_ws;
import cn.hutool.core.thread.ThreadFactoryBuilder; import cn.hutool.core.thread.ThreadFactoryBuilder;
import com.sien.common.tillo.app_ws.model.Constants; import com.wecloud.im.tillo.app_ws.model.Constants;
import com.sien.common.tillo.app_ws.receive.ReadWsData; import com.wecloud.im.tillo.app_ws.receive.ReadWsData;
import com.sien.common.tillo.app_ws.service.AppUserChannelsService; import com.wecloud.im.tillo.app_ws.service.AppUserChannelsService;
import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
......
package com.sien.common.tillo.app_ws.annotation; package com.wecloud.im.tillo.app_ws.annotation;
import com.sien.common.tillo.app_ws.enums.WsRequestCmdEnum; import com.wecloud.im.tillo.app_ws.enums.WsRequestCmdEnum;
import java.lang.annotation.Documented; import java.lang.annotation.Documented;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
......
package com.sien.common.tillo.app_ws.cache; package com.wecloud.im.tillo.app_ws.cache;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
......
package com.sien.common.tillo.app_ws.enums; package com.wecloud.im.tillo.app_ws.enums;
/** /**
* @Description ws请求类型 * @Description ws请求类型
......
package com.sien.common.tillo.app_ws.enums; package com.wecloud.im.tillo.app_ws.enums;
/** /**
* @Description ws响应类型 * @Description ws响应类型
......
package com.sien.common.tillo.app_ws.model; package com.wecloud.im.tillo.app_ws.model;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
package com.sien.common.tillo.app_ws.model; package com.wecloud.im.tillo.app_ws.model;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
......
package com.sien.common.tillo.app_ws.model; package com.wecloud.im.tillo.app_ws.model;
/** /**
* @author wjm * @author wjm
......
package com.sien.common.tillo.app_ws.model; package com.wecloud.im.tillo.app_ws.model;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
......
package com.sien.common.tillo.app_ws.model; package com.wecloud.im.tillo.app_ws.model;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
......
package com.sien.common.tillo.app_ws.model.request; package com.wecloud.im.tillo.app_ws.model.request;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
......
package com.sien.common.tillo.app_ws.model.request; package com.wecloud.im.tillo.app_ws.model.request;
import lombok.Data; import lombok.Data;
......
package com.sien.common.tillo.app_ws.receive; package com.wecloud.im.tillo.app_ws.receive;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.sien.common.tillo.app_ws.enums.WsRequestCmdEnum; import com.wecloud.im.tillo.app_ws.enums.WsRequestCmdEnum;
import com.sien.common.tillo.app_ws.model.request.ReceiveModel; import com.wecloud.im.tillo.app_ws.model.request.ReceiveModel;
import com.sien.common.tillo.app_ws.service.WriteDataService; import com.wecloud.im.tillo.app_ws.service.WriteDataService;
import com.sien.common.tillo.app_ws.strategy.AbstractReceiveStrategy; import com.wecloud.im.tillo.app_ws.strategy.AbstractReceiveStrategy;
import com.sien.common.tillo.app_ws.strategy.ReceiveStrategyContext; import com.wecloud.im.tillo.app_ws.strategy.ReceiveStrategyContext;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
package com.sien.common.tillo.app_ws.service; package com.wecloud.im.tillo.app_ws.service;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.channel.socket.nio.NioSocketChannel;
......
package com.sien.common.tillo.app_ws.service; package com.wecloud.im.tillo.app_ws.service;
import com.sien.common.tillo.app_ws.model.ResponseModel; import com.wecloud.im.tillo.app_ws.model.ResponseModel;
import com.sien.common.tillo.app_ws.model.ResultStatus; import com.wecloud.im.tillo.app_ws.model.ResultStatus;
import com.sien.common.tillo.app_ws.model.request.ReceiveModel; import com.wecloud.im.tillo.app_ws.model.request.ReceiveModel;
/** /**
* @Description ws响应数据,各种状态码封装 * @Description ws响应数据,各种状态码封装
......
package com.sien.common.tillo.app_ws.service.impl; package com.wecloud.im.tillo.app_ws.service.impl;
import cn.hutool.core.thread.ThreadFactoryBuilder; import cn.hutool.core.thread.ThreadFactoryBuilder;
import com.sien.common.tillo.app_ws.cache.UserCache; import com.wecloud.im.tillo.app_ws.cache.UserCache;
import com.sien.common.tillo.app_ws.model.Constants; import com.wecloud.im.tillo.app_ws.model.Constants;
import com.sien.common.tillo.app_ws.service.AppUserChannelsService; import com.wecloud.im.tillo.app_ws.service.AppUserChannelsService;
import io.netty.channel.Channel; import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelFutureListener;
......
package com.sien.common.tillo.app_ws.service.impl; package com.wecloud.im.tillo.app_ws.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.sien.common.tillo.app_ws.model.ResponseModel; import com.wecloud.im.tillo.app_ws.model.ResponseModel;
import com.sien.common.tillo.app_ws.model.ResultStatus; import com.wecloud.im.tillo.app_ws.model.ResultStatus;
import com.sien.common.tillo.app_ws.model.request.ReceiveModel; import com.wecloud.im.tillo.app_ws.model.request.ReceiveModel;
import com.sien.common.tillo.app_ws.service.AppUserChannelsService; import com.wecloud.im.tillo.app_ws.service.AppUserChannelsService;
import com.sien.common.tillo.app_ws.service.WriteDataService; import com.wecloud.im.tillo.app_ws.service.WriteDataService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.sien.common.tillo.app_ws.strategy; package com.wecloud.im.tillo.app_ws.strategy;
import com.sien.common.tillo.app_ws.model.request.ReceiveModel; import com.wecloud.im.tillo.app_ws.model.request.ReceiveModel;
/** /**
* @Description 接收netty不同类型请求 * @Description 接收netty不同类型请求
......
package com.sien.common.tillo.app_ws.strategy; package com.wecloud.im.tillo.app_ws.strategy;
import com.sien.common.tillo.app_ws.enums.WsRequestCmdEnum; import com.wecloud.im.tillo.app_ws.enums.WsRequestCmdEnum;
import com.sien.common.tillo.app_ws.utils.SpringBeanUtils; import com.wecloud.im.tillo.app_ws.utils.SpringBeanUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.Map; import java.util.Map;
......
package com.sien.common.tillo.app_ws.strategy; package com.wecloud.im.tillo.app_ws.strategy;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.sien.common.tillo.app_ws.annotation.ReceiveTypeAnnotation; import com.wecloud.im.tillo.app_ws.annotation.ReceiveTypeAnnotation;
import com.sien.common.tillo.app_ws.enums.WsRequestCmdEnum; import com.wecloud.im.tillo.app_ws.enums.WsRequestCmdEnum;
import com.sien.common.tillo.app_ws.utils.ClassScanner; import com.wecloud.im.tillo.app_ws.utils.ClassScanner;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
......
package com.sien.common.tillo.app_ws.strategy.concrete; package com.wecloud.im.tillo.app_ws.strategy.concrete;
import com.sien.common.tillo.app_ws.annotation.ReceiveTypeAnnotation; import com.wecloud.im.tillo.app_ws.annotation.ReceiveTypeAnnotation;
import com.sien.common.tillo.app_ws.enums.WsRequestCmdEnum; import com.wecloud.im.tillo.app_ws.enums.WsRequestCmdEnum;
import com.sien.common.tillo.app_ws.model.request.ReceiveModel; import com.wecloud.im.tillo.app_ws.model.request.ReceiveModel;
import com.sien.common.tillo.app_ws.strategy.AbstractReceiveStrategy; import com.wecloud.im.tillo.app_ws.strategy.AbstractReceiveStrategy;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
......
package com.sien.common.tillo.app_ws.utils; package com.wecloud.im.tillo.app_ws.utils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.BeanDefinitionStoreException; import org.springframework.beans.factory.BeanDefinitionStoreException;
......
package com.sien.common.tillo.app_ws.utils; package com.wecloud.im.tillo.app_ws.utils;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelFutureListener;
......
package com.sien.common.tillo.app_ws.utils; package com.wecloud.im.tillo.app_ws.utils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisCallback;
......
package com.sien.common.tillo.app_ws.utils; package com.wecloud.im.tillo.app_ws.utils;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
......
package com.sien.common.tillo.netty.core; package com.wecloud.im.tillo.netty.core;
import com.sien.common.tillo.netty.handler.NettyApiRequest; import com.wecloud.im.tillo.netty.handler.NettyApiRequest;
import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelInboundHandlerAdapter;
......
package com.sien.common.tillo.netty.core; package com.wecloud.im.tillo.netty.core;
import com.sien.common.tillo.app_ws.model.Constants; import com.wecloud.im.tillo.app_ws.model.Constants;
import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline; import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.SocketChannel;
......
package com.sien.common.tillo.netty.core; package com.wecloud.im.tillo.netty.core;
import io.netty.bootstrap.ServerBootstrap; import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.PooledByteBufAllocator; import io.netty.buffer.PooledByteBufAllocator;
......
package com.sien.common.tillo.netty.handler; package com.wecloud.im.tillo.netty.handler;
import com.sien.common.tillo.app_ws.AppImHandler; import com.wecloud.im.tillo.app_ws.AppImHandler;
import com.sien.common.tillo.app_ws.model.Constants; import com.wecloud.im.tillo.app_ws.model.Constants;
import com.sien.common.tillo.app_ws.model.RequestHeaderConstants; import com.wecloud.im.tillo.app_ws.model.RequestHeaderConstants;
import com.sien.common.tillo.app_ws.utils.FullHttpRequestUtils; import com.wecloud.im.tillo.app_ws.utils.FullHttpRequestUtils;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.HttpResponseStatus;
......
package com.sien.common.vo; package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.vo; package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.vo; package com.wecloud.im.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
......
package com.sien.common.vo; package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.vo; package com.wecloud.im.vo;
import io.geekidea.springbootplus.framework.shiro.service.LoginToken; import io.geekidea.springbootplus.framework.shiro.service.LoginToken;
import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo; import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.vo; package com.wecloud.im.vo;
import io.geekidea.springbootplus.framework.shiro.service.LoginToken; import io.geekidea.springbootplus.framework.shiro.service.LoginToken;
import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo; import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo;
......
package com.sien.common.vo; package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.vo; package com.wecloud.im.vo;
import lombok.Data; import lombok.Data;
......
package com.sien.common.vo; package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.vo.app; package com.wecloud.im.vo.app;
import io.geekidea.springbootplus.framework.shiro.service.LoginToken; import io.geekidea.springbootplus.framework.shiro.service.LoginToken;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
...@@ -14,10 +14,10 @@ ...@@ -14,10 +14,10 @@
* limitations under the License. * limitations under the License.
*/ */
package com.sien.common.vo.app; package com.wecloud.im.vo.app;
import com.sien.common.vo.AppUserQueryVo; import com.wecloud.im.vo.AppUserQueryVo;
import com.sien.common.vo.DonationRankAndTotal; import com.wecloud.im.vo.DonationRankAndTotal;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
......
package com.sien.common.vo.app; package com.wecloud.im.vo.app;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sien.common.mapper.AppUserMapper"> <mapper namespace="com.wecloud.im.mapper.AppUserMapper">
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, username, wechat_open_id, nickname, idcard, nation, password, salt, phone, phone_area, gender, head, remark, state, deleted, version, create_time, update_time, date_of_birth, education_background, email, location, location_detail, profession, company, emergency_phone id, username, wechat_open_id, nickname, idcard, nation, password, salt, phone, phone_area, gender, head, remark, state, deleted, version, create_time, update_time, date_of_birth, education_background, email, location, location_detail, profession, company, emergency_phone
</sql> </sql>
<select id="getAppUserById" resultType="com.sien.common.vo.AppUserQueryVo"> <select id="getAppUserById" resultType="com.wecloud.im.vo.AppUserQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from app_user where id = #{id} from app_user where id = #{id}
</select> </select>
<select id="getAppUserPageList" parameterType="com.sien.common.param.AppUserPageParam" resultType="com.sien.common.vo.AppUserQueryVo"> <select id="getAppUserPageList" parameterType="com.wecloud.im.param.AppUserPageParam" resultType="com.wecloud.im.vo.AppUserQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from app_user from app_user
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sien.common.mapper.DonationAgentMapper"> <mapper namespace="com.wecloud.im.mapper.DonationAgentMapper">
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, fk_user_id, fk_record_id, remark, create_time, update_time id, fk_user_id, fk_record_id, remark, create_time, update_time
</sql> </sql>
<select id="getDonationAgentById" resultType="com.sien.common.vo.DonationAgentQueryVo"> <select id="getDonationAgentById" resultType="com.wecloud.im.vo.DonationAgentQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from donation_agent where id = #{id} from donation_agent where id = #{id}
</select> </select>
<select id="getDonationAgentPageList" parameterType="com.sien.common.param.DonationAgentPageParam" resultType="com.sien.common.vo.DonationAgentQueryVo"> <select id="getDonationAgentPageList" parameterType="com.wecloud.im.param.DonationAgentPageParam" resultType="com.wecloud.im.vo.DonationAgentQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from donation_agent from donation_agent
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sien.common.mapper.DonationRecordMapper"> <mapper namespace="com.wecloud.im.mapper.DonationRecordMapper">
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
...@@ -8,21 +8,21 @@ ...@@ -8,21 +8,21 @@
, fk_user_id, money, purpose, way, remark, create_time, update_time, is_replace,wx_mer_pay_id,pay_status,pay_time , fk_user_id, money, purpose, way, remark, create_time, update_time, is_replace,wx_mer_pay_id,pay_status,pay_time
</sql> </sql>
<select id="getDonationRecordById" resultType="com.sien.common.vo.DonationRecordQueryVo"> <select id="getDonationRecordById" resultType="com.wecloud.im.vo.DonationRecordQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from donation_record where id = #{id} from donation_record where id = #{id}
</select> </select>
<select id="getDonationRecordPageList" parameterType="com.sien.common.param.DonationRecordPageParam" <select id="getDonationRecordPageList" parameterType="com.wecloud.im.param.DonationRecordPageParam"
resultType="com.sien.common.vo.DonationRecordQueryVo"> resultType="com.wecloud.im.vo.DonationRecordQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from donation_record from donation_record
where pay_status=1 where pay_status=1
and fk_user_id=#{userId} and fk_user_id=#{userId}
</select> </select>
<select id="getDonationRankAndTotal" resultType="com.sien.common.vo.DonationRankAndTotal"> <select id="getDonationRankAndTotal" resultType="com.wecloud.im.vo.DonationRankAndTotal">
SELECT SELECT
* *
FROM FROM
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sien.common.mapper.VipPriceMapper"> <mapper namespace="com.wecloud.im.mapper.VipPriceMapper">
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
...@@ -8,14 +8,14 @@ ...@@ -8,14 +8,14 @@
, price, member_ships, create_time, update_time, state , price, member_ships, create_time, update_time, state
</sql> </sql>
<select id="getVipPriceById" resultType="com.sien.common.vo.app.VipPriceQueryVo"> <select id="getVipPriceById" resultType="com.wecloud.im.vo.app.VipPriceQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from vip_price where id = #{id} from vip_price where id = #{id}
</select> </select>
<select id="getVipPricePageList" parameterType="com.sien.common.param.VipPricePageParam" <select id="getVipPricePageList" parameterType="com.wecloud.im.param.VipPricePageParam"
resultType="com.sien.common.vo.app.VipPriceQueryVo"> resultType="com.wecloud.im.vo.app.VipPriceQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from vip_price from vip_price
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sien.common.mapper.VipRecordMapper"> <mapper namespace="com.wecloud.im.mapper.VipRecordMapper">
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, fk_user_id, fk_recharge_user, money, expired_at, years, remark, create_time, update_time,wx_mer_pay_id,pay_status,pay_time id, fk_user_id, fk_recharge_user, money, expired_at, years, remark, create_time, update_time,wx_mer_pay_id,pay_status,pay_time
</sql> </sql>
<select id="getVipRecordById" resultType="com.sien.common.vo.VipRecordQueryVo"> <select id="getVipRecordById" resultType="com.wecloud.im.vo.VipRecordQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from vip_record where id = #{id} from vip_record where id = #{id}
</select> </select>
<select id="getVipRecordPageList" parameterType="com.sien.common.param.VipRecordPageParam" resultType="com.sien.common.vo.VipRecordQueryVo"> <select id="getVipRecordPageList" parameterType="com.wecloud.im.param.VipRecordPageParam" resultType="com.wecloud.im.vo.VipRecordQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from vip_record from vip_record
......
...@@ -14,7 +14,7 @@ server: ...@@ -14,7 +14,7 @@ server:
################################ spring config start ############################### ################################ spring config start ###############################
spring: spring:
application: application:
name: SiEn name: wecloud_im
http: http:
encoding: encoding:
charset: UTF-8 charset: UTF-8
......
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
<!-- 解决SpringBootAdmin错误日志问题 --> <!-- 解决SpringBootAdmin错误日志问题 -->
<logger name="org.apache.catalina.connector.CoyoteAdapter" level="OFF"/> <logger name="org.apache.catalina.connector.CoyoteAdapter" level="OFF"/>
<root level="INFO"> <root level="DEBUG">
<appender-ref ref="CONSOLE"/> <appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC_FILE"/> <appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="ASYNC_ERROR_FILE"/> <appender-ref ref="ASYNC_ERROR_FILE"/>
......
...@@ -44,7 +44,7 @@ public class SpringBootPlusGenerator { ...@@ -44,7 +44,7 @@ public class SpringBootPlusGenerator {
// Scanner sc = new Scanner(System.in); // Scanner sc = new Scanner(System.in);
// System.out.println("请输入表名称:"); // System.out.println("请输入表名称:");
// String name = sc.nextLine(); // String name = sc.nextLine();
// getCode("app_user"); getCode("application");
// getCode(name); // getCode(name);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment