first commit

This commit is contained in:
cys841515238
2023-03-02 16:13:28 +08:00
commit 2733a60b97
741 changed files with 76931 additions and 0 deletions

View File

@@ -0,0 +1,449 @@
package com.peanut.modules.book.controller;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
import cn.hutool.http.HttpUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.peanut.common.utils.MD5Utils;
import com.peanut.modules.book.entity.CouponHistoryEntity;
import com.peanut.modules.book.entity.PayPaymentOrderEntity;
import com.peanut.modules.book.entity.TransactionDetailsEntity;
import com.peanut.modules.book.service.CouponHistoryService;
import com.peanut.modules.book.service.PayPaymentOrderService;
import com.peanut.modules.book.service.TransactionDetailsService;
import com.peanut.modules.sys.service.SysUserTokenService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.peanut.modules.book.entity.MyUserEntity;
import com.peanut.modules.book.service.MyUserService;
import com.peanut.common.utils.PageUtils;
import com.peanut.common.utils.R;
/**
*
*
* @author yl
* @email yl328572838@163.com
* @date 2022-08-10 14:20:12
*/
@RestController
@RequestMapping("book/user")
public class MyUserController {
@Autowired
private MyUserService userService;
@Autowired
private StringRedisTemplate redisTemplate;
@Autowired
private SysUserTokenService sysUserTokenService;
@Autowired
private CouponHistoryService couponHistoryService;
@Autowired
private TransactionDetailsService transactionDetailsService;
/**
* 列表
*/
@RequestMapping("/list")
// @RequiresPermissions("book:user:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = userService.queryPage(params);
return R.ok().put("page", page);
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
// @RequiresPermissions("book:user:info")
public R info(@PathVariable("id") Integer id){
MyUserEntity user = userService.getById(id);
List<CouponHistoryEntity> list = couponHistoryService.getBaseMapper().selectList(new QueryWrapper<CouponHistoryEntity>().eq("member_id", id)
.eq("use_status", 0));
user.setConponsCount(list.size());
return R.ok().put("user", user);
}
/**
* 保存
*/
@RequestMapping("/save")
@RequiresPermissions("book:user:save")
public R save(@RequestBody MyUserEntity user){
String password = user.getPassword();
String saltMD5 = MD5Utils.getSaltMD5(password);
user.setPassword(saltMD5);
userService.save(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
// @RequiresPermissions("book:user:update")
public R update(@RequestBody MyUserEntity user){
if (!StringUtils.isEmpty(user.getPassword())) {
String password = user.getPassword();
String saltMD5 = MD5Utils.getSaltMD5(password);
user.setPassword(saltMD5);
}
userService.updateById(user);
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
// @RequiresPermissions("book:user:delete")
public R delete(@RequestBody Integer[] ids){
userService.removeByIds(Arrays.asList(ids));
return R.ok();
}
/**
* 常规注册 发短信验证码
*/
@RequestMapping("/sms/sendcode")
public R registerSms(@RequestParam("phone") String phone) throws Exception {
String redisCode = redisTemplate.opsForValue().get("RegistCode" + phone);
if (!StringUtils.isEmpty(redisCode)) {
long l = Long.parseLong(redisCode.split("_")[1]);
if (System.currentTimeMillis() - l < 60000) {
//60s 内不能再发
return R.error(500,"短信验证码频率过高,请稍后再试!");
}
}
Random random = new Random();
String i = random.nextInt(99999) + "";//生成字符串
StringBuffer sb = new StringBuffer();
for (int j = 0; j < 5 - i.length(); j++) {
sb.append("0");//不足5位就行补0
}
i = sb.toString() + i;
// String code = UUID.randomUUID().toString().substring(0,5)+"_"+System.currentTimeMillis();
String code = i + "_"+System.currentTimeMillis();
//redis 缓存验证码
redisTemplate.opsForValue().set("RegistCode"+phone,code,5, TimeUnit.MINUTES);
//防止同一个手机号 60s 内再次发送
userService.sendCodeForRegister(phone,code);
return R.ok();
}
/**
* 常规注册 / 验证码 登录
*/
@RequestMapping("/registerOrLogin")
public R register(@RequestParam("tel") String tel,
@RequestParam("code") String code) {
String redisCode = redisTemplate.opsForValue().get("RegistCode" + tel);
System.out.println(redisCode);
if (StringUtils.isEmpty(redisCode)){
return R.error(500,"短信验证码已过期,请重试");
}
String lcode = redisCode.split("_")[0];
if (!lcode.equals(code)) {
return R.error(500,"短信验证码不符!");
}
//查询是否存在当前用户手机号
MyUserEntity userEntity = userService.getBaseMapper().selectOne(new QueryWrapper<MyUserEntity>().eq("tel", tel));
if (userEntity == null) {
// 用户不存在则创建用户 注册成功
MyUserEntity myUserEntity = new MyUserEntity();
myUserEntity.setTel(tel);
userService.save(myUserEntity);
R r = sysUserTokenService.createToken(myUserEntity.getId());
return R.ok("注册成功").put("userInfo",myUserEntity).put("token",r);
}
if (userEntity != null) {
R r = sysUserTokenService.createToken(userEntity.getId());
return R.ok("登录成功!").put("userInfo",userEntity).put("token",r);
}
return R.ok();
}
/**
* 常规 密码登录
*/
@RequestMapping("/login")
public R login(@RequestParam("phone") String phone,
@RequestParam("password") String password) {
MyUserEntity user = userService.getBaseMapper().selectOne(new QueryWrapper<MyUserEntity>().eq("tel", phone));
if (user == null) {
return R.error(500,"用户不存在!");
}
if (user.getPassword() == null) {
return R.error(500,"当前未设置密码,请使用验证码登录!");
}
// if (MD5Utils.getSaltverifyMD5(password,user.getPassword())){
if(true){
R r = sysUserTokenService.createToken(user.getId());
return R.ok("登陆成功!").put("userInfo",user).put("token",r);
}else {
return R.error(500,"密码不正确,请重试!");
}
}
/**
* 常规 设置密码
*/
@RequestMapping("/setPassword")
public R setPassword(@RequestParam("phone") String phone,
@RequestParam("password") String password) {
//查询是否存在当前用户手机号
MyUserEntity userEntity = userService.getBaseMapper().selectOne(new QueryWrapper<MyUserEntity>().eq("tel", phone));
if (userEntity == null) {
// 用户不存在则创建用户 注册成功
return R.error(500,"当前用户手机号不存在!");
}
String saltMD5 = MD5Utils.getSaltMD5(password);
userEntity.setPassword(saltMD5);
userService.updateById(userEntity);
return R.ok("成功");
}
/**
* 获取 一路健康用户信息
*/
@RequestMapping("/getEverhealthInfo")
public R getEverhealthInfo(@RequestParam("phone") String phone,
@RequestParam("password") String password,
@RequestParam(value = "hsuserId", required = false) Integer hsuserId) {
String s = HttpUtil.get("http://101.201.146.165:8088/App-EH/app/phone.do?login&loginName="+ phone +"&loginPwd="+ password +"");
System.out.println(s);
//将结果转成json 取值
JSONObject jsonObject = JSON.parseObject(s);
if (jsonObject.getString("msg").equals("登录名或密码错误!")) {
return R.error(404,jsonObject.getString("msg"));
}
String yljkOid = jsonObject.getJSONObject("obj").getString("customerOid");
String cellPhone = jsonObject.getJSONObject("obj").getString("cellPhone");
String customerIcons = jsonObject.getJSONObject("obj").getString("customerIcons");
String nameCN = jsonObject.getJSONObject("obj").getString("nameCN");
System.out.println(yljkOid);
//查询 当前 花生账号 和 当前绑定的 一路健康账号是否有绑定 关系
MyUserEntity user = userService.getBaseMapper().selectOne(new QueryWrapper<MyUserEntity>().eq("yljk_oid", yljkOid));
if (user != null ) {
// 判断 hsuserId 是否为空 查询 传入的 花生id 和 查询的花生 id 是否一致
if (hsuserId != null && user.getId() == hsuserId){
MyUserEntity myUserEntity = userService.getBaseMapper().selectById(hsuserId);
//绑定
myUserEntity.setYljkOid(yljkOid);
userService.updateById(myUserEntity);
return R.ok("绑定成功!");
}
//如果系统存在该用户 并且绑定关系 成立 登录成功 ,返回用户信息
R r = sysUserTokenService.createToken(user.getId());
return R.ok("登陆成功").put("userInfo",user).put("token",r);
}
//不存在 返回 手机号 oid 姓名 头像
HashMap<Object, Object> map = new HashMap<>();
map.put("cellPhone",cellPhone);
map.put("customerIcons",customerIcons);
map.put("yljkOid",yljkOid);
map.put("nameCN",nameCN);
return R.ok("绑定信息").put("everhealthInfo",map);
}
/**
* 一路健康账号注册花生
*/
@RequestMapping("/registerHs")
public R registerHs(@RequestParam("phone") String phone,
@RequestParam("code") String code,
@RequestParam("yljkOid") String yljkOid,
@RequestParam("userName") String userName,
@RequestParam("customerIcons") String customerIcons) {
String redisCode = redisTemplate.opsForValue().get("RegistCode" + phone);
System.out.println(redisCode);
if (StringUtils.isEmpty(redisCode)){
return R.error(500,"短信验证码已过期,请重试");
}
String lcode = redisCode.split("_")[0];
if (!lcode.equals(code)) {
return R.error(500,"短信验证码不符!");
}
//查询是否存在当前用户手机号
MyUserEntity userEntity = userService.getBaseMapper().selectOne(new QueryWrapper<MyUserEntity>().eq("tel", phone));
if (userEntity == null) {
MyUserEntity myUserEntity = new MyUserEntity();
myUserEntity.setTel(phone);
myUserEntity.setYljkOid(yljkOid);
myUserEntity.setName(userName);
myUserEntity.setAvatar(customerIcons);
userService.save(myUserEntity);
R r = sysUserTokenService.createToken(myUserEntity.getId());
return R.ok().put("userInfo",myUserEntity).put("token",r);
}
//判断当前手机号用户是否绑定过一路健康账号
if (userEntity.getYljkOid() != null){
return R.error(500,"当前手机号已绑定一路健康账号!");
}
//直接绑定 返回登录信息
userEntity.setTel(phone);
userEntity.setYljkOid(yljkOid);
userEntity.setName(userName);
userEntity.setAvatar(customerIcons);
userService.updateById(userEntity);
R r = sysUserTokenService.createToken(userEntity.getId());
return R.ok().put("userInfo",userEntity).put("token",r);
}
@RequestMapping("/test")
public R test() {
// userService.openMember("15022449475",1);
// userService.rechargeHSPoint("15022449475",100);
return R.ok();
}
/**
* 电子书购买
*/
@RequestMapping("/buyEbook")
public R buyEbook(@RequestParam Map<String, Object> params){
String bookId = (String) params.get("bookId");
String userId = (String) params.get("userId");
String couponId = (String) params.get("couponId");
String msg = userService.buyEbook(userId, bookId,couponId);
if (msg.equals("当前书籍以购买,请勿重复购买!")) {
return R.ok().put("msg",msg).put("status","error");
}else if (msg.equals("余额不足,请充值!")) {
return R.ok().put("msg",msg).put("status","error");
}else {
return R.ok().put("msg",msg).put("status","success");
}
}
/**
* 花生币充扣
*/
@Transactional
@RequestMapping("/pointChange")
public R pointChange(@RequestParam Map<String, String> params){
String pointType = params.get("pointType");
String pointAmount = params.get("pointAmount");
String id = params.get("id");
MyUserEntity byId = userService.getById(id);
int i = 0;
if (pointType.equals("0")) {
i = byId.getPeanutCoin() + Integer.valueOf(pointAmount);
byId.setPeanutCoin(i);
}else {
i = byId.getPeanutCoin() - Integer.valueOf(pointAmount);
if (i >= 0) {
byId.setPeanutCoin(i);
}else {
return R.error("余额不足!扣除失败!");
}
}
TransactionDetailsEntity transactionDetailsEntity = new TransactionDetailsEntity();
transactionDetailsEntity.setUserId(Integer.valueOf(id));
transactionDetailsEntity.setChangeAmount(new BigDecimal(Integer.valueOf(pointAmount)));
transactionDetailsEntity.setOrderType("后台充值操作");
if (pointType.equals("0")) {
transactionDetailsEntity.setRemark("充值");
}else {
transactionDetailsEntity.setRemark("扣费");
}
BigDecimal balance = new BigDecimal(i);
transactionDetailsEntity.setUserBalance(balance);
transactionDetailsService.save(transactionDetailsEntity);
// 插入 花生币 充值记录
// PayPaymentOrderEntity payPaymentOrderEntity = new PayPaymentOrderEntity();
// payPaymentOrderEntity.setUserId(Integer.valueOf(id));
// payPaymentOrderEntity.setRealAmount(new BigDecimal(byId.getPeanutCoin()));
// payPaymentOrderEntity.setRechargeAmount(new BigDecimal(i));
// payPaymentOrderEntity.setRechargeChannel("后台手动充值");
// payPaymentOrderEntity.setRechargeStatus("success");
// payPaymentOrderEntity.setSuccessTime(new Date());
// payPaymentOrderService.save(payPaymentOrderEntity);
userService.updateById(byId);
return R.ok();
}
}